【发布时间】:2020-05-25 00:42:37
【问题描述】:
我最近开始使用 python,但我似乎无法在这个基于文本的游戏中退出 while 循环。我尝试将循环从 while 更改为 for 循环和 If-Else 循环,但我无法做到想办法退出它。当用户输入的数字与系统的随机数匹配时,我希望它退出循环并打印下面写的文本
import random
def batting ():
print("You can enter a number between 1 and 10")
bat = input()
sys_ball = random.randint(1,10)
print (sys_ball)
score_board = (bat + bat)
batting ()
while bat != sys_ball:
batting ()
def balling ():
print ("Ok! Start balling with a number between 1 and 10!")
user_ball = input()
sys_bat = random.randint(1,2)
print (sys_bat)
balling ()
while user_ball != sys_bat:
balling ()
def oddeve ():
print("Welcome to finger cricket! Type 1 to start batting and 2 to start balling!")
odd_eve = input()
if odd_eve == ('1'):
batting ()
print ("You win! You scored".join(score_board))
else:
balling()
print ("You win! You defeated me")
oddeve ()
【问题讨论】:
-
一旦你进入'batting'或'balling',鉴于这些函数以调用自己结束,你永远无法逃脱。在某个地方,您需要一个条件,函数在此条件下返回,而不仅仅是再次调用自身。
-
附带问题,
bat != sys_ball始终为真,因为它们是两种不同的类型:bat是字符串,sys_ball是整数。 -
看起来你可能在你的 while 循环之前额外调用了 batting() 函数和 balling() 函数,这将导致它一遍又一遍地运行函数,永远不会到达 while环形。如果这不能为您解决问题,我可以深入研究并提供答案。
-
顺便说一句,欢迎来到 SO!如果您需要建议,请查看 tour 和 How to Ask。以后请提供minimal reproducible example,以便您和我们更轻松地调试您的代码。我说这个原因
oddeve与问题无关,balling实际上与batting相同。 -
非常感谢大家!代码现在可以工作了!下次我会牢记道德问题!再次非常感谢
标签: python while-loop