python快速上手_第二章 控制流
布林值
True 和 False 。 必須首字母大寫,其餘小寫。
>>> spam = True >>> spam True >>> true Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> true NameError: name 'true' is not defined >>> True = 2+2 SyntaxError: can't assign to keyword
單純小寫會報錯, 而且不能做變數名使用。
比較操作符
比較操作符,比較兩個值,求值為一個 布林值。
- ==
- !=
- <
- <=
- ‘>’
- ‘>=’
>>> 42 == 42 True >>> 23 > 20 True >>> 23 != 23 False >>> 2 != 2 False >>> 'hello' != 'hello' False >>> 'hello' == 'Hello' False >>> 'dog' != 'cat' True >>> True != False True >>> 42 == 42.0 True
<、>、<= 和 >= 操作符僅用於整型和浮點型值
>>> eggCount = 42
>>> eggCount <= 42
True
>>> myAge = 29
>>> myAge >= 10
True
==操作符 和 = 操作符的區別
- ==操作符(等於) 問兩個值是否彼此相同
- = 操作符(賦值) 將右邊的值放到左邊的變數中
布林操作符
有3個操作符, 分別是 and、or、not 用於比較布林值。
二元布林操作符
and 和 or 操作符都接收兩個布林值。
and 相當於java 中的 && 只有兩個都為真的時候,才為真。其他情況下都為 False.
or 相當於 java 中的 || 兩邊只要有一邊為真, 則為真。否則為 False
not操作符
not 只用於一個 布林值。
類似於java中的 ! 操作符。即取反。
>>> not True
False
>>> not False
True
混合布林和比較操作符
因為比較操作符求值為 布林值,那麼就可以和 布林操作符混合使用。
>>> (4<5) and (5<6)
True
>>> (4<5) and (9<6)
False
>>> (1==2) or (2==2)
True
控制流元素
條件
前面看到的布林表示式可以看成條件。它和表示式是一回事。條件總是求值為一個布林值。
程式碼塊
一組程式碼放到一起,和java中一樣。 根據程式碼縮排來分辨程式碼的開始和結束。
1.縮排增加時,程式碼塊開始
2.程式碼塊可以包含其他的程式碼塊
3.縮排減少為零, 或減少為外面包圍程式碼塊的縮排程式碼塊就結束了。
#input a string
print('please input your name ')
name = input()
if name == 'Mary':
print('Hello Mary')
print('please input your password ')
pwd = input()
if pwd == '123':
print('access granted')
else:
print('Wrong')
控制流語句
if語句
語句包含以下:
- if關鍵字;
- 條件(即條件為True 或者 False 的表示式)
- 冒號;
- 在下一行開始,縮排的程式碼塊(稱為 if 子句)
比如
if name == 'Mary':
print('Hello Mary')
else語句
同 java中的 else語句,只是沒有了{} 改為 縮排 和 : 。
else語句包含:
- else關鍵字
- 冒號;
- 在下一行開始, 縮排的程式碼塊(稱為else子句)。
比如,下面校驗密碼的邏輯
if pwd == '123':
print('access granted')
else:
print('Wrong')
elif語句
這個實際上和 java中的 else if(boolean) 是一樣的。 只是關鍵字和表現形式不一樣。
elif語句包含:
- elif關鍵字;
- 條件(即求值為 True 或者 False 的表示式)
- 冒號;
- 在下一行開始,縮排的程式碼塊(稱為 elif子句)
比如下面校驗年齡的邏輯
print('please input your age ')
age = int(input())
if age > 18:
print('you are an adult')
elif age < 18:
print('you are a child')
elif 出現多個條件時,執行處理的順序需要注意。可能會導致某些條件無法執行到
while 迴圈語句
可以讓一個程式碼塊 一遍又一遍的執行。 和 java中的 while迴圈是一樣的,只是表現形式不同。
while語句包含:
- 關鍵字
- 條件(求值為True或者 False的表示式)
- 冒號;
- 從新行開始,縮排的程式碼塊(稱為 while子句)
比如下面的多次列印:
spam = 0
while spam < 5:
print('hello,spam')
spam = spam+1
name = ''
while name != 'your name':
print('please type your name.')
name = input()
print('hello'+name)
break語句
同java中的break語句一樣。 跳出迴圈。
name = ''
while True:
print('please type your name.')
name = input()
if name == 'Alice':
break;
print('hello'+name)
continue語句
同java中的continue語句一樣。如果遇到continue,則後續的不再執行。從新回到迴圈開始的地方,判斷條件。
name = ''
while True:
print('please type your name.')
name = input()
if name != 'Alice':
continue;
print('Hello,Alice,Nice to meet you.')
print('Please input you password')
pwd = input()
if pwd == '123':
break
print('successm')
for迴圈和 range() 函式
類真 和 類假的值
在用於條件時,0、0.0 和 ‘’(空字串) 被認為是 False。其他值被認為是True。
for迴圈語句包含:
- for關鍵字;
- 一個變數名;
- in 關鍵字;
- 呼叫range()方法,最多傳入3個引數
- 冒號;
- 從下一行開始,縮排的程式碼塊(稱為for子句)
比如:
for i in range(5):
print('hello,world')
range(5) i 分別被設定為 0、1、2、3、4。
計算 1 - 100 的和
total = 0
for i in range(101):
total = total+i
print(total)
range()的開始、停止和步長引數
range()可以傳遞3個引數。
1個引數的時候,代表的是 上限值.不包括傳入的值。
2個引數的時候,第一個是起始值,第二個是上限。
3個引數的時候,第一個是起始值,第二個是上限,第三個是步長
for i in range(0,10,2):
print(i)
列印結果為:
0 2 4 6 8
匯入模組
import語句匯入模組包含:
- import關鍵字
- 模組的名稱
- 可選的更多模組名稱,之間用逗號隔開
在匯入一個模組之後,就可以使用該模組中的函數了。
比如:
import random
for i in range(5):
print(random.randint(1,10))
random.randint()函式呼叫求值為傳遞給它的兩個整數之間的一個隨機數。因為 randint()函式屬於 random模組。 必須在函式名稱之前加上 random. 告訴 python在 random模組中尋找該函式。
匯入多個模組
import random,sys,os,math
from import語句
import 語句的另外一種形式包括 from關鍵字。之後是模組的名稱,import關鍵字和一個星號。
例如 from random import * .
使用這樣的import語句,那麼在呼叫 random中的函式時,就不用加 random.字首。 但可讀性會變差。最好還是使用普通的匯入方式。
for i in range(5):
print(randint(1,10))
用sys.exit()提前結束程式
這個函式是在 sys 模組中,所有我們在使用前,必須先匯入 sys。
import sys
while True:
print('Type exit to exit')
response = input()
if response == 'exit':
sys.exit()
print('You typed '+response)