第六章:用戶輸入和while循環

前言
在本章中,你將學習如何接受用戶輸入,讓程序能夠對其進行處理。在程序需要一個名字時,你需要提示用戶輸入該名字;程序需要 一個名單時,你需要提示用戶輸入一系列名字。爲此,你需要使用函 數input()。
你還將學習如何讓程序不斷地運行,讓用戶能夠根據需要輸入信息,並在程序中使用這 些信息。爲此,你需要使用while循環讓程序不斷地運行,直到指定的條件不滿足爲止。
通過獲取用戶輸入並學會控制程序的運行時間,可編寫出交互式程序。
7.1 函數input()的工作原理
函數input()讓程序暫停運行,等待用戶輸入一些文本。獲取用戶輸入後,Python將其存儲在 一個變量中,以方便你使用。

message = input("Tell me something,and I will repeat it back to you:")
print(message)

7.1.2 使用int()來獲取數值輸入
使用函數input()時,Python將用戶輸入解讀爲字符串;但如果你試圖將輸入作爲數字使用,就會引發錯誤:爲解決這個問題,可使用函數int(),它讓Python將輸入視爲數值。函數int()將數字的字符 串表示轉換爲數值表示;

height = input("How tall are you,in inches?")
height = int(height)	#轉化爲數值

if height >= 36:
	print("\nYou're tall enough to ride!")
	
else:
	print("\nYou'll be able to ride when you're a little older.")
	

7.1.3 求模運算符
處理數值信息時,求模運算符(%)是一個很有用的工具,它將兩個數相除並返回餘數:求模運算符不會指出一個數是另一個數的多少倍,而只指出餘數是多少。如果一個數可被另一個數整除,餘數就爲0,因此求模運算符將返回0。你可利用這一點來判斷一個數是奇數還是偶數:

number = input("Enter a number,and I'll tell you if it's even or odd:")
number = int(number)

if number%2 == 0:
	print("\nThe number "+str(number)+" is even.")
else:
	print("\nThe number "+str(number)+" is odd.")

7.1.4 在Python 2.7中獲取輸入
如果你使用的是Python 2.7,應使用函數raw_input()來提示用戶輸入。這個函數與Python 3 中的input()一樣,也將輸入解讀爲字符串.Python 2.7也包含函數input(),但它將用戶輸入解讀爲Python代碼,並嘗試運行它們。因此,最好的結果是出現錯誤,指出Python不明白輸入的代碼;而最糟的結果是,將運行你原本無意運 行的代碼。如果你使用的是Python 2.7,請使用raw_input()而不是input()來獲取輸入。
課後習題
7-1 汽車租賃:編寫一個程序,詢問用戶要租賃什麼樣的汽車,並打印一條消息, 如“Let me see if I can find you a Subaru”。
7-2 餐館訂位:編寫一個程序,詢問用戶有多少人用餐。如果超過 8人,就打印一 條消息,指出沒有空桌;否則指出有空桌。
7-3 10的整數倍:讓用戶輸入一個數字,並指出這個數字是否是 10的整數倍。

#7-1
car = input("請問你要租賃什麼樣的汽車:")
print("Let me see if I can find you a "+car)

#7-2
num = input("請輸入您的用餐人數:")
num = int(num)
if num >= 8:
	print("抱歉沒有空桌子了")
else:
	print("歡迎光臨!")

#7-3
number = input("請輸入一個數字:")
number = int(number)
if number%10 == 0:
	print(str(number)+"是10的倍數!")
else:
	print("不是10的倍數!")

7.2 while 循環簡介
for循環用於針對集合中的每個元素都一個代碼塊,而while循環不斷地運行,直到指定的條 件不滿足爲止。
7.2.1 使用while循環
你可以使用while循環來數數,例如下面的while循環從1數到5:

current_number = 1
while current_number <=5:
	print(current_number)
	current_number +=1
在第1行,我們將current_number設置爲1,從而指定從1開始數。接下來的while循環被設置 成這樣:只要current_number小於或等於5,就接着運行這個循環。循環中的代碼打印 current_number的值,再使用代碼current_number += 1(代碼current_number = current_number + 1的簡寫)將其值加1。
只要滿足條件current_number <= 5,Python就接着運行這個循環。由於1小於5,因此Python 打印1,並將current_number加1,使其爲2;由於2小於5,因此Python打印2,並將current_number 加1,使其爲3,以此類推。一旦current_number大於5,循環將停止,整個程序也將到此結束:

7.2.2 讓用戶選擇何時退出
可使用while循環讓程序在用戶願意時不斷地運行

prompt = "\nTell me something,and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program."
message =""
while message!= 'quit':
	message = input(prompt)
	print(message)

7.2.3 使用標誌
在要求很多條件都滿足才繼續運行的程序中,可定義一個變量,用於判斷整個程序是否處於 活動狀態。這個變量被稱爲標誌

prompt = "\nTell me something,and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program."
# message =""
# while message!= 'quit':
# 	message = input(prompt)
# 	print(message)
active = True
while active:
	message = input(prompt)
	if message == 'quit':
		active = False
	else:
		print(message)

7.2.4 使用break 退出循環
要立即退出while循環,不再運行循環中餘下的代碼,也不管條件測試的結果如何,可使用 break語句。break語句用於控制程序流程,可使用它來控制哪些代碼行將執行,哪些代碼行不執 行,從而讓程序按你的要求執行你要執行的代碼。

prompt = "\nPlease enter the name of a city you have visited:"
prompt += "\n(Enter 'quit' when you are finished.)"
while True:
	city = input(prompt)
	if city == 'quit':
		break
	else:
		print("I'd love to go to "+city.title()+"!")

7.2.5 在循環中使用 continue
要返回到循環開頭,並根據條件測試結果決定是否繼續執行循環,可使用continue語句,它 不像break語句那樣不再執行餘下的代碼並退出整個循環。例如,來看一個從1數到10,但只打印 其中偶數的循環:

current_number = 0
while current_number <10:
	current_number +=1
	if current_number%2 == 0:	#判斷是否是奇數
		continue
	print(current_number)

7.2.6 避免無限循環
每個while循環都必須有停止運行的途徑,這樣纔不會沒完沒了地執行下去

x = 1 
while x <= 5:     
	print(x)     
	x += 1 

如果不小心遺漏了代碼行x += 1,這個循環將沒完沒了地運行。如果程序陷入無限循環,可按Ctrl + C,也可關閉顯示程序輸出的終端窗口。
課後習題
7-4 **比薩配料:**編寫一個循環,提示用戶輸入一系列的比薩配料,並在用戶輸入 'quit’時結束循環。每當用戶輸入一種配料後,都打印一條消息,說我們會在比薩中添 加這種配料。
7-5 **電影票:**有家電影院根據觀衆的年齡收取不同的票價:不到 3歲的觀衆免費; 3~12歲的觀衆爲 10美元;超過 12歲的觀衆爲 15美元。請編寫一個循環,在其中詢問 用戶的年齡,並指出其票價。
7-6 三個出口:以另一種方式完成練習 7-4或練習 7-5,在程序中採取如下所有做法。
 在 while 循環中使用條件測試來結束循環。
 使用變量 active 來控制循環結束的時機。
 使用 break 語句在用戶輸入’quit’時退出循環。
7-7 無限循環:編寫一個沒完沒了的循環,並運行它(要結束該循環,可按 Ctrl +C, 也可關閉顯示輸出的窗口)。

在這裏插入代碼片

程序明日見!!!休息了,老鐵們

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章