我的游戏出错?

时间:2015-12-02 00:06:09

标签: python python-2.7 python-3.x ipython

from random import randint

random_number = randint(1, 10)

guesses_left = 3
# Start of the game
while guesses_left != 0:
   def guess():
        guess = int(input("What is your guess?"))
        if guess > 10:
        print ("Insert value between 1 and 10")
        guesses_left += 1
    guess()
if guess == random_number:
    print ("You win")
    break
guesses_left -= 1
else:
    print ("You lose")

我正在制作这个游戏,其中形成随机数字并且用户猜测随机数以赢得游戏。但是,我想实现一个安全性,即如果猜测超过10,那么它将打印“输入值从1到10”(参见代码)并且还在猜测中添加1。我把它变成了一个函数,这样打印消息就会一直显示,直到用户将所有的猜测从1到10完成。我在该函数中遇到错误:(

另外,如何在没有功能的情况下继续显示打印信息?我知道如何使用while循环,但是有更好的方法吗?

3 个答案:

答案 0 :(得分:0)

您根本不需要此功能,因为您不会多次调用它。

考虑问题的好方法是程序以不知道玩家猜测是什么的状态开始。您可以将其表示为0.然后,while循环检查猜测是否为> = 1 AND< = 20。从第一次开始,它不会,循环会要求1到10之间的猜测。

答案 1 :(得分:0)

from random import randint
random_number = 10 # randint(1, 10)
guesses_left = 3

# Start of the game
while guesses_left != 0:
    guess = int(input("Guess a number between 1 and 10: "))
    if guess > 10:
        print "(error: insert a value between 1 and 10)"
        guesses_left = guesses_left - 1 #add if you want to dock them a guess for not following instructions :)
    else:
        if guess is random_number:
            print ("You win!")
            break
        else:
            print "Nope!"
            guesses_left = guesses_left - 1
    if guesses_left is 0:
        print "Wah Wah. You lose."

我的代码可能比它需要的更冗长,但它可以解决问题。编写脚本的方式存在一些问题。

  • 像Hack Saw说的那样,我觉得你不需要这个功能。
  • 缩进已关闭。这对python很重要
祝你上课好运! :)

答案 2 :(得分:0)

这里有几点说明:

1)删除while循环之外的guess函数的定义。

2)观察缩进。它在Python中很有意义

3)我将guess函数与主代码合并,它仍然非常易读

4)如果不减少,你可以避免将guesses_left增加1

5)我真的希望你学习编程,而不是让我们为你完成你的作业。 Python可以非常强大,请继续了解它。

from random import randint
random_number = randint(1, 10)

guesses_left = 3

# Start of the game
win=False
while guesses_left>0:
    guess=int(input("What is your guess?"))
    if guess==random_number:
        win=True
        break
    elif guess>10:
        print("Insert value between 1 and 10")
        continue
    else:
        guesses_left -= 1
if win:
    print("You win")
else:
    print("You lose")