1. 程式人生 > 實用技巧 >判斷語句 、 while迴圈 、 for迴圈

判斷語句 、 while迴圈 、 for迴圈

判斷語句

語法結構

if 條件1:

如果條件1為真,執行語句塊

elif 條件2:

如果條件2為真,執行語句塊

elif 條件3:

如果條件2為真,執行語句塊

elif 條件n:

如果條件n為真,執行語句塊

else:

如果上述條件都為假,執行語句塊

判斷條件是一個分支結構,只會執行一個分支
資料型別也可以作為判斷條件。對於數字,任何值為0的數字都是假,非0為真;其他資料型別,非空為真,空為假

if -0.0:
print('值為0,假') # 不列印

if ' ':
print('空格也是一個字元,為真')
if '':
print('空字串,假') # 不列印
if [10, 20]:
print('非空列表,為真')
if (10, 20):
print('非空元組,為真')
a = 10
b = 20
if a < b:
s = a
else:
s = b
print(s)
#以上判斷可以簡寫為
s1 =a if a < b else b
print(s)
在python中,有非常多的功能,不是直接載入,而是放到了不同的模組檔案中,使用模組時,
先通過import匯入,然後使用【模組.功能】的方式使用


1.模擬使用者登入
vim login.py

import getpass
username = input("請輸入使用者名稱: ")
passwd = getpass.getpass("請輸入密碼:") #能夠獲取使用者的輸入不在螢幕中顯示
if username == "bob" and passwd == '123456':
print("登入成功")
else:
print("登入失敗")

2.分數測試
num = int(input('分數:'))

if num >= 60 and num < 70:
print('及格')
elif 70 <= num < 80:

print('良')
elif 80 <= num < 90:
print("好")
elif num >= 90:
print("優秀")
else:
print('你要努力了')
random模組

>>> import random
>>> random.randint(1.100) #隨機取出1-100之間的數字

77

>>>random.choice('abcd') #在字串中取出一項
'd'

>>>random.choice(['aaa', 'bbb', 'ccc']) #在列表中隨機取出一項
'bbb'

3.編寫石頭剪刀布小遊戲
import random
win_list = [['石頭', '剪刀'],['剪刀', '布'],['布', '石頭']]
xuan_xiang = ['石頭', '剪刀', '布']
computer = random.choice(xuan_xiang)
player = input('請出拳(石頭/剪刀/布): ')
print('player: %s, computer: %s' % (player, computer))
if player == computer:
print("平局")
elif [player, computer] in win_list:
print("你贏了")
else:
print("你輸了")
迴圈語句
如果迴圈次數未知,使用while迴圈
如果迴圈次數已知,使用for迴圈

語法結構
while 條件:
如果條件為真,執行語句塊
語句塊執行完畢後,返回到while條件
while後面得條件,也和if的條件完全一樣

3.優化石頭剪刀布指令碼,三局兩勝
import random
win_list = [['石頭', '剪刀'],['剪刀', '布'],['布', '石頭']]
xuan_xiang = ['石頭', '剪刀', '布']
#為人機建立計數器
pwin = 0
cwin = 0
while pwin < 2 and cwin < 2:
computer = random.choice(xuan_xiang)
player = input('請出拳(石頭/剪刀/布): ')
print('player: %s, computer: %s' % (player, computer))
if player == computer:
print("\033[32;1m平局\033[0m") 顏色:\033[32;1m常量\033[0m
elif [player, computer] in win_list:
print("\033[31;1m你贏了\033[0m")
pwin += 1
else:
print("\033[31;1m你輸了\033[0m")
cwin += 1
while迴圈中還可以包含break子句,迴圈遇到break將會結束迴圈
continue語句用於跳過本次迴圈,回到判斷條件處
python的迴圈語句也有else,當迴圈被break時,else語句不執行,否則執行

for迴圈
for迴圈也有continue/break/else,用法與while完全一樣
for迴圈經常和renge連用
s1 = 'abc'
l1 = ['tom', 'jerry', 'jack', 'rose']
t1 = (10, 20, 30)
d1 = {'name': 'nb', 'age': 20}
for zifu in s1:
print(zifu)
a
b
c
for name in l1:
print(name)

tom
jerry
jack
rose


for i in t1:
print(i)

10
20
30


for key in d1:
print(key, d1[key])

name nb
age 20

for迴圈經常和renge連用

>>> range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(0,10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(10)) #將range轉成列表
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>>for i in range(10): #實際使用時,不需要轉列表
... print(i)
...

>>> list(range(10)) #10是結束數字,起始值預設為0,結束數字不包含
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(6,11)) #6是起始數字,包含
[6, 7, 8, 9, 10]

>>> list(range(1,11,2)) #步長為2
[1, 3, 5, 7, 9]
>>> list(range(10,0,-1)) #步長為-1
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

列表解析

用於快捷便捷地生成列表解析

>>> [10]
[10]
>>> [10 + 1] #將表示式的結果存入列表
[11]
>>> [10 + 1 for i in range(1,11)] #通過迴圈控制表示式的計算次數
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11
>>> [10 + i for i in range(1,11)] #表示式可以用迴圈的變數
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> [10 + i for i in range(1,11) if i % 2 == 1] #if作為過濾條件,滿足條件的放到列表
[11, 13, 15, 17, 19]

>>>['192.168.4.%s' % i for i in range(255)]

>>>['192.168.4.' +str(i) for i in range(255)]