寫它會用到
while 迴圈random 模組if 語句輸入輸出函式
原始碼先丟擲來import random #匯入random模組,用來產生隨機數times = 10 #設定我們的答題次數secret = random.randint(1,100) #隨機給random一個1~9的數字,再給secret賦值print('---------------Python要和你玩猜數字遊戲---------------')print('猜一個1-100之間的數')guess = 0 #設定guess的值while (guess != secret) and (times > 0): #結束條件,要麼次數用完,要麼答對。 guess = int(input("猜猜我想的是幾:")) #使用者輸入,並轉換為整數 times = times - 1 #使用者每輸入一次,猜數次數就-1 if guess == secret: #如果使用者輸入對了 print("恭喜你猜對了!") print("哼,猜中了也沒有獎勵!") break #跳出迴圈 else: if guess > secret: print("大了大了~~~")# 之所以不在這裡設定重輸,是因為在if times > 0: 中已經弄過了,這樣避免輸兩次,也避免次數已用完還讓重輸 else: print("小了小了-_-") if times > 0: #判斷次數是否用完 print("再試一次吧:", end=" ") else: print("機會用光咯T_T") print("我想的是"+str(secret)+"!") #揭曉答案print("遊戲結束,不玩啦^_^")
知識講解random#0## 介紹Python中的隨機數操作較簡單,不像其他高階語言那樣必須用特定的公式才能產生
語法import random #匯入模組random.方法() #呼叫方法
方法引數表
目前我們用到的是randint()方法。
舉例>>> import random>>> random.randint(0,10)5>>> random.randint(0,10)2>>>
while語法
while 迴圈條件: 語句
舉例
num = 0while num<3:#如果num小於3,就進入迴圈 num+=1 #等同num=num+1 print(num)
圖:
拆分程式碼講解產生隨機數import randomrandom.randint(0,100)
執行結果:
>>> random.randint(0,100)50>>> random.randint(0,100)28>>> random.randint(0,100)35>>> random.randint(0,100)15>>> random.randint(0,100)10>>> random.randint(0,100)27>>> random.randint(0,100)89>>> random.randint(0,100)43>>> random.randint(0,100)90>>> random.randint(0,100)16>>> random.randint(0,100)80>>>
現在我們可以產生隨機數了,但是隻有呼叫一次方法才能產生一次隨機數,怎麼辦呢?對了,可以用迴圈來反覆做相同的事。
迴圈產生隨機數import randomwhile True: random.randint(0,100)
執行結果:
682551447521702425953419596398931506069332843854306469949482495806983204892244851772523687084345686303912900363123345160268163887440556947448386633727681008820994947358074967842204449497153556751553987981961707658944773102229899533984415294781613717843184329648786691551281848202356Traceback (most recent call last): File "<pyshell#3>", line 2, in <module> random.randint(0,100)KeyboardInterrupt>>>
可以看到,它一直輸出隨機數,這並不是我們想要的,我們想要的是使用者輸入一個數,和這個隨機數比對
增加迴圈條件和簡單的判斷對上述採取的方法是:把產生的隨機數存入變數,進行判斷、比對
import randomsecret = random.randint(0,100) #產生隨機整數guess = input('猜猜我想的是幾:')#獲取使用者輸入while guess!=secret:#當用戶輸入不等於產生的數時,進入迴圈 if guess>secret:#當用戶輸入的數大於隨機數時 print("大了大了@_@")#列印提示文字 else:#當用戶輸入的數小於隨機數時 print("小了小了>_<")#列印提示文字print("恭喜你答對了!")print("哼,對了也沒有獎勵!")print('遊戲結束,不玩了~')
看似沒有問題,我們來執行一下執行後發現報錯了:
猜猜我想的是幾:12Traceback (most recent call last): File "C:/Users/Administrator/Desktop/aa.py", line 5, in <module> if guess>secret:#當用戶輸入的數大於隨機數時TypeError: '>' not supported between instances of 'str' and 'int'
哦,原來是沒有轉換型別,input返回的是字串,字串不能和整數比較
改後:
import randomsecret = random.randint(0,100) #產生隨機整數guess = int(input('猜猜我想的是幾:'))#獲取使用者輸入,並轉化為整數while guess!=secret:#當用戶輸入不等於產生的數時,進入迴圈 if guess>secret:#當用戶輸入的數大於隨機數時 print("大了大了@_@")#列印提示文字 else:#當用戶輸入的數小於隨機數時 print("小了小了>_<")#列印提示文字print("恭喜你答對了!")print("哼,對了也沒有獎勵!")print('遊戲結束,不玩了~')
執行:
小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<小了小了>_<Traceback (most recent call last): File "C:/Users/Administrator/Desktop/aa.py", line 8, in <module> print("小了小了>_<")#列印提示文字KeyboardInterrupt>>>
還是有問題!
解決報錯&增加輸錯重輸功能、限制使用者輸入次數功能同學們想想,當列印提示語後,使用者沒有重輸,會一直滿足那個條件,就會迴圈列印。那麼我們可以增加重輸功能,當輸的不對時,就重輸,就不會迴圈列印了;新增限制使用者輸入功能,這樣就避免使用者一直猜
1.當然,因為又加了一個功能,答對了的提示就不能放在迴圈外面了,2.之所以不在列印大了小了設定重輸,是因為在if times > 0: 中已經弄過了,這樣避免輸兩次,也避免次數已用完還讓重輸
import random #匯入random模組,用來產生隨機數times = 10 #設定我們的答題次數secret = random.randint(1,100) #隨機給random一個1~9的數字,再給secret賦值print('---------------Python要和你玩猜數字遊戲---------------')print('猜一個1-100之間的數')guess = 0 #設定guess的值while (guess != secret) and (times > 0): #結束條件,要麼次數用完,要麼答對。 guess = int(input("猜猜我想的是幾:")) #使用者輸入,並轉換為整數 times = times - 1 #使用者每輸入一次,猜數次數就-1 if guess == secret: #如果使用者輸入對了 print("恭喜你猜對了!") print("哼,猜中了也沒有獎勵!") break #跳出迴圈 else: if guess > secret: print("大了大了~~~")# 之所以不在這裡設定重輸,是因為在if times > 0: 中已經弄過了,這樣避免輸兩次,也避免次數已用完還讓重輸 else: print("小了小了-_-") if times > 0: #判斷次數是否用完 print("再試一次吧:", end=" ") else: print("機會用光咯T_T") print("我想的是"+str(secret)+"!") #揭曉答案print("遊戲結束,不玩啦^_^")
效果
最新評論