首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python猜谜游戏,我的获胜条件打印输赢

Python猜谜游戏,我的获胜条件打印输赢
EN

Stack Overflow用户
提问于 2020-08-31 17:28:22
回答 4查看 261关注 0票数 0

我正在学习python,并开始玩猜谜游戏。我的游戏工作正常,但我的获胜条件打印了“你赢了”和“你输了”,我认为我的"if“语句是不正确的,但我可能是错的。另外,我打印输赢有一个问题,我只能让它打印输赢。提前感谢!

代码语言:javascript
代码运行次数:0
运行
复制
import random

print("Number guessing game")

name = input("Hello, please input your name: ")
win = 0
loss = 0

diceRoll = random.randint(1, 6)

if diceRoll == 1:
    print("You have 1 guess.")
if diceRoll == 2:
print("You have 2 guesses.")
if diceRoll == 3:
    print("You have 3 guesses.")
if diceRoll == 4:
    print("You have 4 guesses.")
if diceRoll == 5:
    print("You have 5 guesses.")
if diceRoll == 6:
    print("You have 6 guesses.")

number = random.randint(1, 5)

chances = 0

print("Guess a number between 1 and 5:")

while chances < diceRoll:

    guess = int(input())

    if guess == number:

        print("Congratulation YOU WON!!!")
        break
        win += 1
    elif guess < number:
        print("Your guess was too low")

    else:
        print("Your guess was too high")

    chances += 1

if not chances == 0:
    print("YOU LOSE!!! The number is", number)
    loss += 1
print(name)
print("win: "+str(win))
print("loss: "+str(loss))
EN

回答 4

Stack Overflow用户

发布于 2020-08-31 17:34:45

试着改变你的循环。如果它是正确的,那么您可以使用while: else。否则,您可能会在最后一次机会中获胜,但仍然会收到失败的消息。

代码语言:javascript
代码运行次数:0
运行
复制
while chances < diceRoll:

    guess = int(input())

    if guess == number:

        print("Congratulation YOU WON!!!")
        break
        win += 1
    elif guess < number:
        print("Your guess was too low")

    else:
        print("Your guess was too high")
    chances += 1
else:
    print("YOU LOSE!!! The number is", number)
    loss += 1
票数 0
EN

Stack Overflow用户

发布于 2020-08-31 17:41:35

在while循环中,if语句应该是...

代码语言:javascript
代码运行次数:0
运行
复制
if guess == number:
    print("Something)
    win += 1
    break

最后一条if语句应该是...

代码语言:javascript
代码运行次数:0
运行
复制
if win != 0:
    print("You lose")
else:
    print("You win")
票数 0
EN

Stack Overflow用户

发布于 2020-08-31 17:42:15

问题存在于最终的if语句中。如果玩家的chances大于diceRoll,则玩家输了,而如果玩家的机会不是0,即玩家失败了一次,则if条件为真。

最后的if语句的代码应该如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
if chances >= diceRoll:
    print("YOU LOSE!!! The number is", number)
    loss += 1

至于打印win的问题,这里的问题存在于while循环内的第一个if语句中。如果玩家获胜,则首先遇到break语句,因此代码将中断while循环,而不会递增win计数器。

只需将break语句与win += 1互换,它将会创造奇迹:

代码语言:javascript
代码运行次数:0
运行
复制
if guess == number:
    print("Congratulation YOU WON!!!")
    win += 1
    break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63668207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档