[英]How to go back to the start of the loop
問題:創建一個程序,讓用戶猜測計算機生成的數字。 玩家有 5 次嘗試,如果他猜錯了程序結束。
我以兩種方式完成了這個程序。
import random
import sys
def computer_number () :
return random.randint (1, 20)
def user_number () :
return int (input ("Number: "))
def number_verification () :
w_ans = 0 # counts the number of wrong ans..
t = 0 # counts the number of turns so far...
while True :
cpu_number = computer_number ()
print (cpu_number)
player_number = user_number ()
if cpu_number == player_number :
print ("Right guess.")
sys.exit () # program ends when user guesses right
else:
w_ans += 1
t += 1
print ("Wrong answer.", 5 - t, " turns left.")
if t > 4 :
print ("Maximum tries exceded.")
sys.exit ()
return w_ans, t
number_verification ()
import sys
import random
def number_validation (cpu_number, player_number) :
w_ans = 0
t = 0
while t < 5 :
if cpu_number == player_number :
print ("OK")
sys.exit ()
else :
w_ans += 1
t += 1
print ("Wrong number", 5 - t, " turns left.")
if t > 4 :
print ("Maximum tries exceded.")
sys.exit ()
cpu_number = random.randint (1, 20)
print (cpu_number)
player_number = int (input ("Number: "))
print (number_validation (cpu_number, player_number))
基本上我不明白的是,while循環在我的兩個程序中的結構相同。 但是在第二個程序中,如果我輸入錯誤的數字,我會得到以下 output。
1
Number: 9
Wrong number 4 turns left.
Wrong number 3 turns left.
Wrong number 2 turns left.
Wrong number 1 turns left.
Wrong number 0 turns left.
Maximum tries exceded.
為什么我的兩個程序的行為不同。
那是因為您在此處的第一個while
循環中每次都從用戶那里獲得輸入:
while True :
cpu_number = computer_number ()
print (cpu_number)
player_number = user_number ()
而在第二個 while 循環中,您只能在while
循環之外獲得一次
cpu_number = random.randint (1, 20)
print (cpu_number)
player_number = int (input ("Number: "))
print (number_validation (cpu_number, player_number))
只需在你的內部添加這行代碼while
讓它像你的第一個代碼一樣工作。
player_number = int (input ("Number: "))
提示:請使用調試器追溯此類混淆。
問題在於輸入的放置。 您的第二個 function 接受一個輸入並使用它執行 while 循環。 您需要將輸入放在 while 循環中:
import sys
import random
def number_validation (cpu_number) :
w_ans = 0
t = 0
while t < 5 :
player_number = int (input ("Number: "))
if cpu_number == player_number :
print ("OK")
sys.exit ()
else :
w_ans += 1
t += 1
print ("Wrong number", 5 - t, " turns left.")
if t > 4 :
print ("Maximum tries exceded.")
sys.exit ()
cpu_number = random.randint (1, 20)
print (cpu_number)
number_validation (cpu_number)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.