我們需要用戶傳入值,並使用這個值。我們就可以使用input()這個函數,可以打印input()括號內的內容,並等待用戶輸入,並在用戶輸入回車后繼續運行。
當我們使用input()函數時,我們都應指定清晰而易明白的提示,准確指出希望用戶的輸入
name = input('please enter you name \n') print('welcome %s'%name) age = input('please enter your age:') print('%s 年齡 %s'%(name,age))
當input()內的字符串過長超過一行時為了方便代碼閱讀,我們可以將字符串定義到變量內。
welcome = ''' 1.for the lichking 2.for the freedom ''' input(welcome)
while 循環簡介
for循環用於針對集合中的每個元素都一個代碼塊,而while循環不斷的運行,直到指定的條件不滿足為止。
可以使用while循環來數數
1 count_num = 1 2 while count_num<6: 3 print(count_num) 4 count_num+=1
只要滿足while后面的表達式,都執行循環內的代碼,不滿足結束
讓用戶選擇合適退出
message = input('enter q exit') while message !='q': message = input('enter q exit')
先讓用戶輸入,並提示輸入q結束。當輸入q的時候不走循環,輸入其他的時候進入循環,直到輸入q
1 welcome = 'welcome to notjoke,enter q exit:\n' 2 get_str = '' 3 while get_str !='q': 4 get_str = input(welcome) 5 if get_str != 'q': 6 print(get_str)
對代碼進行改進,將用戶輸入的全部輸出出來,直到用戶輸入q,q不會打印
使用標志
在我們平常使用過程中,有很多情況導致程序停止運行,怎么辦呢
比如:游戲中,生命值沒了,守護的基地沒了都會讓游戲結束,如果在一個while語句中檢查所有這些條件,將既復雜有困難
因此我們可以定義一個變量,用於判斷整個程序是否處於活動狀態。這個變量稱之為標志,充當了程序的交通信號燈。
我們可以對之前的代碼進行修改
1 welcome = 'welcome to notjoke,enter q exit:\n' 2 active = 1 3 get_str = '' 4 while active: 5 get_str = input(welcome) 6 if get_str != 'q': 7 print(get_str) 8 else: 9 active = 0
當然這里也可以用True和False,這里需要判斷active的值,默認為true,直到輸入q后,將active的值變為0,條件判斷不通過跳出循環
我么將active設置成了true,讓程序最初處於獲得狀態,這樣簡化了while,因為不需要再做任何比較,相關的邏輯由程序其他部分來執行
break
要立即退出while循環,不再允許代碼中余下的代碼,也不管測試結果如何可使用break語句。break用於控制程序流程,可使用他來控制哪些代碼將執行,哪些不執行,從而讓程序按你的要求執行代碼。
還是上個例子我們可以讓用戶輸入q時,break
while 1: message = input('enter q exit') if message =='q': break else: print(message)
死循環直到用戶輸入q時,break會打斷跳出循環,任何循環中都可以使用break,比如可用break來退出遍歷列表或字典
continue
要返回循環開頭,並根據條件測試結果決定是否繼續執行循環,可使用continue語句 比如
for x in range(1,11): if x%2 == 0: continue print(x) x = 0 while x<11: x+=1 if x%2 == 0: continue print(x)
如果能整除2,跳回循環那,不能的話打印出來
避免無限循環
for循環是一種遍歷列表的有效方式,但在for循環中不應該修改列表否則將導致python難以追蹤其中的元素。要在遍歷列表的同時進行修改,可使用while循環。通過將while循環同列表和字典結合起來使用,可收集和存儲並組織大量輸入,供以后查看和顯示
假設一個列表,其中包含新注冊但還未驗證的網站用戶。驗證這些用戶后,如何將他們移動到另一個已驗證用戶列表中呢 ?
1 wyz_list = ['cc','yy','sc'] 2 yz_list = [] 3 while wyz_list: 4 yz_name = wyz_list.pop() 5 print('%s 驗證成功'%yz_name) 6 yz_list.append(yz_name) 7 for x in yz_list: 8 print(x)
通過while循環刪除列表內指定值的全部元素
我們可以通過remove()方法刪除指定元素,但是remove()一次只能刪除一個元素,刪除所有的可以用while對列表判斷直到列表內沒有 指定值
lc = [1,1,2,3,1] while 1 in lc: lc.remove(1) print(lc)
先判斷列表中是否包含指定值,如果包含執行循環內語句,刪除后再檢查是否在列表內,在繼續循環直到列表內沒有指定值的元素
使用用戶輸入來填充字典
1 active = 1 2 responses ={} 3 while active: 4 name = input('enter your name') 5 job = input('enter your job') 6 responses[name] = job 7 choose = input('enter anything input,enter no exit') 8 if choose == 'no': 9 active = 0
active標志
練習
創建一個名為sandwich_orders的列表,在其中包含三明治的名字,再創建一個finished_sandwiches。遍歷第一個個列表,並打印 i made your tuna sandwich ,並將它轉移到第二個列表。都做完后將第二個列表打印
1 sandwich_orders = ['ss','nn','aa','kk','ee'] 2 finished_sandwiches =[] 3 while sandwich_orders: 4 sandwich = sandwich_orders.pop(0) 5 finished_sandwiches.append(sandwich) 6 print('%s make over '%sandwich) 7 print(finished_sandwiches)
while 內判斷列表是否空,每次都刪除列表第一個值,刪完結束打印第二個列表