繁体   English   中英

猜谜游戏 - Python 中的循环问题

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM