1. 程式人生 > >python快速上手_第二章 控制流

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)