[英]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.