十一、Python第十一課——用戶輸入和另一種循環(While)

(請先看置頂博文)https://blog.csdn.net/GenuineMonster/article/details/104495419

?

?

學了這么久的Python,大家肯定會好奇,不是說機器學習嗎?不是人機交互嗎?不是人工智能嗎?怎么我學了Python都十節課了,還沒有寫出能和電腦交互的程序?不要著急,第十一節課后,我們學習Python的內容就逐漸變難。當然,從這節課開始,我們將會寫一些要求用戶輸入的一些程序,簡稱交互式程序。

目錄

一、輸入函數input()和數據類型轉換函數int()

1、input()函數的些許知識?

2、int()函數的些許知識

?二、while循環

1、while循環講解及舉例

2、在while循環中使用標志

3、break和continue

4、用while循環處理列表和字典

A、在列表之間移動元素

B、刪除包含特定值的所有列表元素

C、使用while循環填充字典


一、輸入函數input()和數據類型轉換函數int()

函數用途
input()獲取用戶輸入的字符串
int()將用戶輸入的數值轉換為整型

1、input()函數的些許知識?

我們接下來編寫第一個交互式程序:(我輸入的是“I love Python!”(忽略綠色)電腦回復給我的也是這樣的一句話。)

# 定義一個變量,存儲用戶輸入的字符串
# input()函數括號內的話將會被打印顯示,并期待用戶的輸入。
message=input("Tell me something, and I will repeat it back to you: ")
print(message)

對上面的代碼進行一個解釋:函數input()接受一個參數:即要向用戶顯示的提示或說明,讓用戶知道該如何做。在這個例子中,Python運行第一行代碼時,用戶看到提示(讓輸入一句話),程序等待用戶輸入,并在用戶按回車鍵后繼續運行。輸入的字符串存儲在變量message中,最后被print()函數輸出。

我們學習input()函數之后,就會接觸到越來越多的需要用戶輸入的程序,因此輸出一個用戶提示信息是有必要的。例如:

name = input("Please enter your name: ")
print("Hello, " + name + "!" )

如果提示超過一行,可以將提示存儲在一個變量中,再將該變量傳遞給函數input()。如此一來,即便提示超過一行,input()語句也非常清楚。例如:

prompt = 'If you tell us who you are,we can personalize the messgaes you see.'
prompt += '\nWhat is your first name? '
name = input(prompt)
print('\nHello,' + name + '!')

上面這個例子演示了一種創建多行字符串的方式,第1行將信息的前半部分存儲在變量prompt中,在第2行中,運算符+=將“What is your first name ? ”追加到prompt中?

2、int()函數的些許知識

這里我們使用一個例子來引出int()函數:

age = input("How old are you? ")  # 提示用戶輸入用戶的年齡
age += 2    # 將用戶輸入的年齡增加2
print(age)  # 輸出現在的age

?

為什么會報錯呢?就寫了三行代碼就報錯了?21 + 2 = 23,直接輸出23不就好了嗎?這就是我文章開頭說到的input()函數會將用戶輸入的內容以字符串的形式保存起來,字符串+2=?,所以編譯器會報錯。那為了解決這個問題,我們可以用int()函數來進行對用戶年齡的獲取。改正代碼如下所示:

age = input("How old are you? ")  # 提示用戶輸入用戶的年齡
age = int(age)     # 將用戶輸入的年齡字符串轉換為整形
age = age + 2
print(age)  #輸出現在的age

除此以外,我們還有其他眾多的轉換函數,例如float(),我后期也會介紹。在第一節的最后,以求模運算符結束。“%”就是求模運算符,它將兩個數相除并返回余數。所以當一個數可被另一個數整除時,余數就為0了,所以我們可以利用%來判斷一個數是奇數還是偶數,下面的代碼我們就使用了int()函數將用戶輸入的數值字符串轉換為整形,在輸出時,我們又使用str()將int型轉換為字符串類型,用于輸出:

number = input("Enter a number, and I will tell you if it is 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.")


二、while循環

1、while循環講解及舉例

一看到循環,就想起了之前學過的for循環,那while循環和for循環有什么區別呢?for循環習慣用于遍歷集合中的每個元素,而while循環不斷地運行,直到不滿足指定的條件為止。先舉個例子:

number = 1           # 給number初始值
while number <= 5:   # 循環語句:number不大于5別想從循環出來  print(number)number += 1

上述代碼預先設置了循環的結束條件,那么我們是否可以先讓程序運行起來,通過檢查用戶的輸入來決定程序是否要繼續?答案是肯定的,要不然我們開始游戲后,如何退出游戲呢?

prompt ="\nTell me something, and I will reapt it back to you: "
prompt += "\nEnter 'quit' to end the program. "
# 以上代碼就是多行提示輸出的又一例子
message = "" # 將message設置為空的字符串,讓編譯器首次檢驗的時候有可供檢查的東西
while message != 'quit':message = input(prompt)print(message)

上述2個示例代碼在使用while循環時,都使用了條件判斷,第一個是number不大于5就一直循環,第二個是只要用戶不輸入“quit”,程序就一直運行。那之前學的if條件語句中的檢驗多個條件的方法在這里還是否適用呢?我們改寫一下第二個示例代碼,讓用戶在輸入quit和exit中的任何一個時才退出程序:

prompt ="\nTell me something, and I will reapt it back to you: "
prompt += "\nEnter 'quit' or 'exit' to end the program. "
# 以上代碼就是多行提示輸出的又一例子
message = "" # 將message設置為空的字符串,讓編譯器首次檢驗的時候有可供檢查的東西
while (message != 'quit' and message != 'exit'):# 加不加括號都一樣message = input(prompt)print(message)

細心的同學可能就發現了,誰退出游戲時,點了退出還會顯示“退出游戲”四個字。我們可以使用if條件語句,如果輸入的是“quit”或者“exit”就打印了。

2、在while循環中使用標志

?

上述讓程序是否繼續的條件有兩個,那么有多個時,我們將會如何組織代碼,使其更加簡約易讀呢?那就是使用標志。在要求很多條件同時滿足才能繼續運行的程序中,我們可以定義一個變量,用于判斷整個程序是否還處于活動狀態。這個變量被稱為標志,也就是這個程序的信號燈:可以讓程序在標志為True時繼續運行,并在任何事件導致標志的值為False時讓程序停止運行。如此一來,在while語句中就只需要檢查一個條件,把全部測試放在其他地方,進而達到代碼美觀、易讀、功能還完整的目的。我們還以輸入“quit”結束的那個程序為例:

prompt ="\nTell me something, and I will reapt it back to you: "
prompt += "\nEnter 'quit' or 'exit' to end the program. "
# 以上代碼就是多行提示輸出的又一例子active = True
while active:  # 表示當active為True時,就循環message = input(prompt) # 讓用戶輸入字符串if message == 'quit':   # 如果用戶輸入quitactive = False      # 改變標志的狀態else:                   # 否則還是輸出messageprint(message)

假設,我們把“如果用戶輸入的是exit,也退出程序”轉變為代碼加進去,只需要在if語句下增添elif語句即可。由此可見,這段程序的可擴展性還是比較強的。

3、break和continue

Python里的break和continue與C語言里的break和continue是一樣的:

break:要立即退出while循環,不再運行循環中余下的代碼,也不管條件測試的結果如何,可使用break語句。

continue:返回到循環開頭,并根據條件測試結果決定是否繼續執行循環,可使用continue語句。舉例如下:

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':breakelse:print("I would love to go to  " + city.title() + "!")

?

注:在任何Python循環中都可使用break語句。例如可以使用break語句來退出遍歷列表或字典的for循環。

current_number = 0
while current_number < 10:current_number += 1if current_number % 2 ==0:continueprint(current_number)

建議:每寫一個循環語句都要格外注意,避免死循環、避免縮進問題。如果不小心掉進了死循環,那么可以使用“Ctrl+C”或關掉終端窗口來結束死循環的程序。

4、用while循環處理列表和字典

?我們之前學過使用for循環對列表、字典進行增刪改查,現學的while同樣也可以完成上述操作。for循環是一種遍歷列表的有效方式,但在for循環中不應修改列表,否則將導致Python難以跟蹤其中的元素。要在遍歷列表的同時對其進行修改,可使用while循環。通過將while循環同列表和字典結合起來使用,可收集、存儲并組織大量輸入,供以后查看和顯示。

A、在列表之間移動元素

問題情景:A列表包含新注冊但還未驗證的網站用戶,驗證這些用戶后,將他們移到另一個已驗證用戶列表中:

# 首先創建一個待驗證用戶列表以及一個用于存儲已驗證用戶的空列表
unconfirmed_users = ['alice','brian','candace']
confirmed_users = []
# 使用while循環驗證每個未驗證的用戶,直到沒有為止
# 驗證一個用戶之后立馬將其追加到已驗證用戶的列表里
while unconfirmed_users:current_user = unconfirmed_users.pop()print("Verifying user: " + current_user.title())confirmed_users.append(current_user)
# 顯示所有已驗證的用戶
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:print(confirmed_user)

?

?細心觀察,三個人的名字在兩個列表間實現了移動,他們之間的相對位置也發生了變化,這是因為使用了pop()方法(從第一個列表的末尾開始刪除用戶,append()方法增加用戶時又將剛剛彈出的用戶增加到列表的第一個位置)

B、刪除包含特定值的所有列表元素

?在前面的課程中,我們學習了remove()方法來刪除列表中的特定值,這種方法只適合待刪除元素在列表中只出現一次的情況。如果待刪除元素在列表中出現多次,那么就得借助while循環語句。例如:

要刪除列表中所有的“cat”

pets = ['dog','cat','dog','goldfish','cat','rabbit','cat']
print(pets)
while 'cat' in pets:pets.remove('cat')
print(pets)

?有人就說用一個for循環代替while循環也能實現。實現是絕對沒問題的,但是具體過程還是有很大區別的:while循環是只要發現列表里還有“cat”(發現的過程似乎是遍歷一次列表),就繼續循環,執行remove(),也就是說針對上面代碼舉的例子,while循環代碼至少遍歷列表三次(因為有三個cat);而for循環是按照列表中的元素一個一個找過去,是“cat”就刪掉,不是就繼續循環,直到列表末尾。(for循環只遍歷了一次列表)(以上是我個人看法,歡迎指正)

C、使用while循環填充字典

for循環可以對字典進行“增”,while循環也不甘示弱。例如下面一段調查信息的程序:

responses = {}# 設置一個標志,指出調查是否繼續
polling_active = Truewhile polling_active:#提示輸入被調查者的名字和回答name = input("\nWhat is your name? ")response = input("which moutain would you like to climb someday? ")# 將答卷存儲在字典中responses[name] = response# 看看是否還有人要參加調查repeat = input("Would you like to let another person respond?(yes/ no) ")if repeat == 'no':polling_active = False
# 調查結果,顯示結果
print("\n--- Poll Results ---")
for name,response in responses.items():print(name + " would like to climb " + response + ".")

如果忘記了字典的增刪改查,就復習一下,尤其是items(),容易被遺忘。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531073.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531073.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何讓新創建的Python文件自動生成作者信息等內容(以Pycharm為例)

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 打開Pycharm軟件后&#xff0c;點擊“File”&#xff0c;然后點擊“Settings”&#xff0c;就會出現下面截圖界面&#xff1a;然后按照箭頭所指&#xff0c;在對應位置…

如何將谷歌瀏覽器的背景色(包括顯示的網站界面等)全部調為黑色?2020.12.28

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 因為電腦顯示器正對窗戶的原因&#xff0c;平時為了透氣通風不能使用遮光簾&#xff0c;所以我將整個電腦的所有軟件的主題色設為黑色&#xff0c;這樣能降低一些光的…

Windows 10如何消除文件夾右上角的“相對箭頭”?

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 整理筆記本電腦時發現&#xff0…

目標檢測第1步:如何在Windows 10下安裝MiniConda?

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 目錄 一、Conda是什么&#xff…

十二、Python第十二課——函數

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 目錄 &#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 目錄 目錄 &#xff08;請先看置頂博文&#xff…

目標檢測第2步:如何在Windows 10下安裝Anaconda?

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 想要學習目標檢測的朋友可能會發…

目標檢測第3步:如何在Windows 10系統下安裝CUDA(更新時間2022.03.22)

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 目錄 一、自檢 1、查看PC是否…

目標檢測第5步:如何在Windows 10系統下,搭建YOLOv5(5.0)環境?保姆級,沒有人比這個更詳細了(更新時間2022.3.22)

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 目錄 一、安裝Anaconda或Minic…

導入自己寫的類,卻被標紅,原因及解決方法是?(Pycharm編輯器為例)

&#xff08;請先看這篇文章&#xff1a;https://blog.csdn.net/GenuineMonster/article/details/104495419&#xff09; 如果看完這篇博文&#xff0c;你的問題還是沒有解決&#xff0c;那么加我的公眾號&#xff0c;后臺發消息給我吧&#xff01;當天回復&#xff01…

如何將Word與Endnote再次相互關聯?

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 Endnote是每一個科研人員都接觸…

十三、Python第十三課——類(包含對類的相關概念的理解,這一文的附錄讓你徹底明白類和對象)

&#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 目錄 &#xff08;請先看置頂博文&#xff09;https://blog.csdn.net/GenuineMonster/article/details/104495419 一、類和對象 1、類 2、對象 二、類的創建和實例…

十四、Python第十四課——文件和異常

&#xff08;請先看這篇文章&#xff1a;https://blog.csdn.net/GenuineMonster/article/details/104495419&#xff09; 如果看完這篇博文&#xff0c;你的問題還是沒有解決&#xff0c;那么請關注我的公眾號&#xff0c;后臺發消息給我吧&#xff0c;當天回復&#x…

目標檢測第6步:YOLOv5(5.0)如何在Colab中訓練自定義數據集?(更新時間:2022.3.22)

&#xff08;請先看這篇文章&#xff1a;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客&#xff09; 如果看完這…

十五、Python第十五課——測試代碼

&#xff08;請先看這篇文章&#xff1a;https://blog.csdn.net/GenuineMonster/article/details/104495419&#xff09; 也許你聽過軟件測試&#xff1f;編寫函數或類時&#xff0c;可以為其編寫對應的測試代碼。通過測試&#xff0c;可檢驗代碼是否能夠按照編寫意圖工作。在…

Windows 10環境下如何安裝CMake?(更新時間:2021.9.13)

&#xff08;請先看這篇文章&#xff1a;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客&#xff09; 1、下載Cmake 下…

Windows 10環境下AndroidStudio安裝教程(內含如何配置Http Proxy)

&#xff08;請先看這篇文章&#xff1a;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客&#xff09; 一、AndroidStudi…

如何將Android Studio卸載的干干凈凈?

&#xff08;請先看這篇文章&#xff1a;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客&#xff09; 1、打開控制面板&…

英文輸入的字母間距變大,如何調回原來的樣子?

使用微軟內置輸入法的時候&#xff0c;我經常會遇到輸入英文字母間距變大的情況。 問題出現原因&#xff1a;間距變大是因為我們的輸入法由原來的“半角”轉換為“全角”。 解決方法&#xff1a;在輸入法設置中修改&#xff0c;或者鍵盤同時敲擊“shift”“space”即可。

Android Studio編譯后運行按鈕還是灰色的解決方法

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 安裝配置好AndroidStudio之后&am…

OpenCV安裝教程

&#xff08;請先看置頂博文&#xff09;本博打開方式&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;請詳讀&#xff01;&#xff01;&#xff01;_Cat-CSDN博客 1、下載 下載地址&#xff1a…