[英]Guessing Game - Looping Problem in Python
我必须开发一款游戏,根据玩家的猜测来奖励玩家。 用户猜测一个数字,算法将其与随机生成的 2 位数字进行比较,并相应地奖励玩家。
问题:玩家需要在游戏结束前玩这个游戏3次。 当我用 while 循环循环它 3 次时,它只会通过询问用户的猜测来循环,并且不会打印或返回奖励消息。 当我删除 while 循环并使用 for 循环时,它只运行一次并打印消息。
我如何解决这个循环问题并运行这个程序三次?
import random
jackpot = 10000
award2 = 3000
award3 = 100
noaward = 0
play = 3
turns = 1
def lottery_game():
for x in range(play):
lottery = random.randrange(10,99)
lot = list(map(int, str(lottery)))
guess = int(input("Choose a 2 digit number: "))
n_guess = list(map(int, str(guess)))
if guess == lottery:
return "You won: " + str(jackpot) + " Euros"
elif n_guess[0] == lot[0] or n_guess[1] == lot[1]:
return "You won: " + str(award2) + " Euros"
elif n_guess[0] == lot[1] or n_guess[1] == lot[0]:
return "You won: " + str(award3) + " Euros"
else:
return "I am sorry, you won: " + str(noaward) + " Euros" + " try again"
while i <= 3:
lottery_game()
i = i + 1
根据你的代码,你不初始化你i
变你的面前while
你肯定768,16做到这一点。 但是对于您的用例,您不应该使用while
,您应该使用这样的for
循环:
for i in range(0,3):
这将在循环中运行代码 3 次。
你还没有初始化i
在while语句前加i=1
你需要
print
语句替换return
:while i <= 3
替换for i in range(3)
这是更新的代码:
import random
jackpot = 10000
award2 = 3000
award3 = 100
noaward = 0
def lottery_game():
lottery = random.randrange(10, 99)
lot = list(map(int, str(lottery)))
guess = int(input('Choose a 2 digit number: '))
n_guess = list(map(int, str(guess)))
if guess == lottery:
print(f'You won: {jackpot} Euros')
elif n_guess[0] == lot[0] or n_guess[1] == lot[1]:
print(f'You won: {award2} Euros')
elif n_guess[0] == lot[1] or n_guess[1] == lot[0]:
print(f'You won: {award3} Euros')
else:
print(f'I am sorry, you won: {noaward} Euros. Try again')
for i in range(3):
lottery_game()
示例输出:
Choose a 2 digit number: I am sorry, you won: 0 Euros. Try again
Choose a 2 digit number: You won: 100 Euros
Choose a 2 digit number: You won: 10000 Euros
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.