首頁>技術>

寫它會用到

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("遊戲結束,不玩啦^_^")
效果

9
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • python裝飾器學習詳解-函式部分