一、游戲規則
下面我們通過一個“猜數字”的小游戲來看看如何使用while循環。猜數字游戲的規則是:計算機出一個1到100之間的隨機數,玩家輸入自己猜的數字,計算機給出對應的提示信息(大一點、小一點或猜對了),如果玩家猜中了數字,計算機提示用戶一共猜了多少次,游戲結束,否則游戲繼續。
二、簡易版程序
1、代碼
點擊查看代碼
#猜數字游戲
import random
Ai = random.randint(1, 100)
co = 0
while True:
co += 1
num = int(input('請輸入: '))
if Ai > num:
print('大一點')
elif Ai < num:
print('小一點')
else:
print('恭喜你猜對了!')
break
print(f'你總共猜了{co}次')
if co > 7:
print('你的智商余額明顯不足')
2、問題:
用戶如果輸入非整數,程序將會報錯,游戲無法繼續
三、改版1
1、解決:
通過if判斷和break語句解決用戶誤輸入非整數類型的報錯
點擊查看代碼
import random
Ai = random.randint(1, 100)
co = 0
a = input('接下來我們將開始猜數字游戲,Are you ready! y/n: ')
if a == 'y':
while True:
co += 1
num = int(input('請輸入: '))
if Ai > num:
print('大一點')
elif Ai < num:
print('小一點')
else:
print('恭喜你猜對了!')
break
print('你總共猜了{co}次')
if co > 7:
print('你的智商余額明顯不足')
elif a == 'n':
print('程序運行結束')
else:
print('輸入無效,程序終止')
2、問題:
通過解決了用戶誤輸入報錯的問題,程序基本正常運行,也提升了用戶和程序的交互性。但是又發現了新的問題,用戶交互性不夠好,程序只能運行一次就自動結束。
四、改版2
1、解決:
通過嵌套if語句使得while語句內部的程序可以多次運行,為了避免if語句內部用戶誤輸入再次報錯,再使用while嵌套一層,然后使用break避免該結束的語句重復運行
點擊查看代碼
import random
Ai = random.randint(1,100)
a = input('接下來我們將開始猜數字游戲,Are you ready! y/n: ')
while True:
if a == 'y':
co = 0
while True:
num = int(input('請輸入一個1-100之間的數字:'))
co +=1
if Ai > num:
print('你輸入的數字小了')
elif Ai < num:
print('你輸入的數字大了')
elif Ai == num:
if co < 7:
print(f'恭喜你猜對了!你一共用了{co}次,實在優秀')
a = input('請問是否繼續游戲y/n: ')
if a == 'n':
break
else:
print(f'恭喜你猜對了!但是你一共用了{co}次,很遺憾的告訴你,你的智商余額明顯不足')
a = input('請問是否繼續游戲y/n: ')
if a == 'n':
break
else:
print('你輸入的是無效的數字,程序自動終止')
break
elif a == 'n':
print('程序運行結束')
break
else:
print('輸入無效,程序終止')
break
2、問題:
現在基本解決了用戶誤輸入報錯和交互性的問題,可以多次正常運行了,可是運行多次后發現程序提示用戶輸入次數是開始到程序結束的次數,但是預期希望的是每一次開始都是重新計算次數
五、改版三
1、解決:
通過每次重新開始都給co這個變量賦值為0,這樣就解決了程序每次開始不重新計數的問題了
點擊查看代碼
import random
Ai = random.randint(1,100)
a = input('接下來我們將開始猜數字游戲,Are you ready! y/n: ')
while True:
if a == 'y':
co = 0
while True:
num = int(input('請輸入一個1-100之間的數字:'))
co +=1
if Ai > num:
print('你輸入的數字小了')
elif Ai < num:
print('你輸入的數字大了')
elif Ai == num:
if co < 7:
print(f'恭喜你猜對了!你一共用了{co}次,實在優秀')
a = input('請問是否繼續游戲y/n: ')
co = 0
if a == 'n':
break
else:
print(f'恭喜你猜對了!但是你一共用了{co}次,很遺憾的告訴你,你的智商余額明顯不足')
a = input('請問是否繼續游戲y/n: ')
co = 0
if a == 'n':
break
else:
print('你輸入的是無效的數字,程序自動終止')
break
elif a == 'n':
print('程序運行結束')
break
else:
print('輸入無效,程序終止')
break
六、總結
以上是目前運行程序發現並解決問題的一些思路,這個程序對高手而言或許不夠簡潔,但是基於目前知識有限,希望大家能夠提出建議,還有運行中要是有發現其他問題歡迎提出,共同進步。最后小秀一把一次就猜對成績,嘿嘿!

