DW Python Task02 條件迴圈結構

2021-10-08 11:03:14 字數 4548 閱讀 1917

注意點:

assert 3 > 7

# assertionerror

while 布林表示式:

**塊else:

**塊

當while迴圈正常執行完的情況下,執行else輸出,如果while迴圈中執行了跳出迴圈的語句,比如 break,將不執行else**塊的內容。

for迴圈是迭代迴圈,在python中相當於乙個通用的序列迭代器,可以遍歷任何有序序列,如str、list、tuple等,也可以遍歷任何可迭代物件,如dict。

每次迴圈,迭代變數被設定為可迭代物件的當前元素,提供給**塊使用。

遍歷dict的例子:

dic = 

for key, value in dic.items():

print(key, value, sep=':', end=' ')

# a:1 b:2 c:3 d:4

dic = 

for key in dic.keys():

print(key, end=' ')

# a b c d

dic = 

for value in dic.values():

print(value, end=' ')

# 1 2 3 4

注:遍歷鍵就用dic.keys(),遍歷值就用dic.values(),遍歷鍵和值就用dic.items()

是否執行else迴圈的規則和while-else的規則相同,當for迴圈正常執行完的情況下,執行else輸出,如果for迴圈中執行了跳出迴圈的語句,比如 break,將不執行else**塊的內容,與while - else語句一樣。

range([start,] stop[, step=1])
enumerate(sequence, [start=0])
seasons = ['spring', 'summer', 'fall', 'winter']

lst = list(enumerate(seasons))

print(lst)

# [(0, 'spring'), (1, 'summer'), (2, 'fall'), (3, 'winter')]

#返回元組陣列

lst = list(enumerate(seasons, start=1)) # 下標從 1 開始

print(lst)

# [(1, 'spring'), (2, 'summer'), (3, 'fall'), (4, 'winter')]

for i, a in enumerate(a)

do something with a

#i,a的變數名不影響,前面的代表索引值也就是元組的第0個元素,後面的代表元組的第1個元素

break語句跳出最內層迴圈,注意,不跳出條件語句。

continue同理,終止最內層本輪迴圈,不跳出條件語句。

pass 語句的意思是「不做任何事」,如果你在需要有語句的地方不寫任何語句,那麼直譯器會提示出錯,而 pass 語句就是用來解決這些問題的。

pass是空語句,不做任何操作,只起到佔位的作用,其作用是為了保持程式結構的完整性。儘管pass語句不做任何操作,但如果暫時不確定要在乙個位置放上什麼樣的**,可以先放置乙個pass語句,讓**可以正常執行。

eg:

def a_func():

# syntaxerror: unexpected eof while parsing

def a_func():

pass

[ expr for value in collection [if condition] ]#if語句可有可無
eg:

x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]

print(x)

# [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]

a = [(i, j) for i in range(0, 3) for j in range(0, 3)]

print(a)

# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

#返回的陣列中(0, 0), (0, 1), (0, 2)是前三個,說明在前面的for確實為外層迴圈

規則同陣列推導式

eg:

b = 

print(b)

#

規則同陣列推導式,但是會捨去重複的元素

eg:

c = 

print(c)

#

d = 'i for i in "i love lsgogroup"'

print(d)

# i for i in "i love lsgogroup"

編寫乙個python程式來查詢那些既可以被7整除又可以被5整除的數字,介於1500和2700之間。

for i in range(1500,2701):

if not i % 7 and not i % 5:

print(i)

龜兔賽跑遊戲

題目描述:

話說這個世界上有各種各樣的兔子和烏龜,但是研究發現,所有的兔子和烏龜都有乙個共同的特點——喜歡賽跑。於是世界上各個角落都不斷在發生著烏龜和兔子的比賽,小華對此很感興趣,於是決定研究不同兔 子和烏龜的賽跑。他發現,兔子雖然跑比烏龜快,但它們有眾所周知的毛病——驕傲且懶惰,於是在與烏龜的比賽中,一旦任一秒結束後兔子發現自己領先t公尺或以 上,它們就會停下來休息s秒。對於不同的兔子,t,s的數值是不同的,但是所有的烏龜卻是一致——它們不到終點決不停止。

然而有些比賽相當漫長,全程**會耗費大量時間,而小華發現只要在每場比賽開始後記錄下兔子和烏龜的資料——兔子的速度v1(表示每秒兔子能跑v1 公尺),烏龜的速度v2,以及兔子對應的t,s值,以及賽道的長度l——就能**出比賽的結果。但是小華很懶,不想通過手工計算推測出比賽的結果,於是他找 到了你——清華大學計算機系的高才生——請求幫助,請你寫乙個程式,對於輸入的一場比賽的資料v1,v2,t,s,l,**該場比賽的結果。

輸入:輸入只有一行,包含用空格隔開的五個正整數v1,v2,t,s,l,其中(v1,v2< =100;t< =300;s< =10;l< =10000且為v1,v2的公倍數)

輸出:輸出包含兩行,第一行輸出比賽結果——乙個大寫字母「t」或「r」或「d」,分別表示烏龜獲勝,兔子獲勝,或者兩者同時到達終點。

第二行輸出乙個正整數,表示獲勝者(或者雙方同時)到達終點所耗費的時間(秒數)。

string_input = input('請輸入v1,v2,t,s,l:')

v1,v2,t,s,l = (int(x) for x in string_input.split(' '))

time_turtle = l / v2

time_all = 0

length_rabbit = 0

length_turtle = 0

while length_turtle < l or length_rabbit < l:

length_rabbit += (t-(length_rabbit - length_turtle))/(v1-v2) * v1

time_all += (t-(length_rabbit - length_turtle))/(v1-v2) + s

length_turtle = time_all * v2

time_rabbit = time_all - s - (length_rabbit -l) /v1

if length_turtle >=l and length_rabbit = l and length_rabbit < 1:

print('r')

print('%d'%time_rabbit)

else:

if time_turtle < time_rabbit:

print('t')

print('%d'%time_turtle)

elif time_turtle > time_rabbit:

print('r')

print('%d'%time_rabbit)

else:

print('d')

print('%d'%time_turtle)

02條件篩選

使用者有可能會根據分類搜尋 品牌搜尋,還有可能根據規格搜尋,以及 搜尋和排序操作。根據分類和品牌搜尋的時候,可以直接根據指定域搜尋,而規格搜尋的域資料是不確定的,是乙個區間搜尋,所以我們可以分為三段實現,先實現分類 品牌搜素,再實現規格搜尋,然後實現 區間搜尋。2.1.1需求分析 頁面每次向後台傳入...

02 條件語句

if 條件 條件成立後的 else 條件不成立後的 示例1print 開始 if 5 5 print 123 else print 456 print 結束 示例2num 19 if num 10 print num變數對應值大於10 else print num變數對應值不大於10 示例3 use...

學習進度條02

學習進度條 第二週星期一 星期二星期三 星期四星期五 星期六所花時間 8 00 9 50 上課時間 14 30 15 30 查閱資料 15 30 16 52討論四則運算2的設計思路 19 00 21 00 編寫程式的大致框架 19 00 20 00 編寫程式的詳細內容 8 00 9 40 修改程式的...