Python数字猜谜游戏不工作

2024-04-20 12:07:22 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想开始开发游戏和mods之类的,所以我开始研究编程语言,并决定选择python作为我的起始语言,因为它看起来相当简单而且非常有效。我已经做了大约两天了,利用我目前的知识,我试图写一个猜谜游戏的代码!在您继续阅读之前,以下是我的游戏代码:

import random

print("Welcome to a guessing game!")
print ("You have 3 try's to guess the correct number!")


number = raw_input ("Pick a number between 1 and 10!: " )
compnumber = random.randint (1,10)
enter = "Please press enter to exit..."
winner = "Congrats your a Winner!"
loser_high = "Uh-Oh!  That Number is to high!  Guess again!"
loser_low = "Uh-Oh!  That number is to low!  Guess again!"
demand = "Pick a number between 1 and 10!: "
game_over = "Sorry, you have lost the game!"


#Guess Number One
if number == compnumber :
    print (winner)
elif number != compnumber and number > compnumber :
    print (loser_high)
    guess2 = raw_input ()
elif number != compnumber and number < compnumber :
    print (loser_low)
    guess2 = raw_input (demand)

#Guess Number Two
if guess2 == compnumber :
    print (winner)
elif guess2 != compnumber and guess2 > compnumber :
    print (loser_high)
elif guess2 != compnumber and guess2 < compnumber :
    print (loser_low)
    guess3 = raw_input (demand)

#Guess Number Three
if guess3 == compnumber :
    print (winner)
elif guess3 != compnumber and guess3 > compnumber :
    print (loser_high)
elif guess3 != compnumber and guess3 < compnumber :

这只是一个简单的40行代码,我很自豪:D

总之,这是我的问题。当我运行应用程序时,我没有得到任何语法错误或任何错误,但当我输入我的第一个猜测,它总是说我的猜测是高。。。当我再试一次,它说的是同样的话,然后控制台关闭。。。为什么会这样?在

另外,如果有人能给我一些关于如何简化/压缩我当前代码的建议,请在下面发表,如果有人有学习更高级的python的教程,请让我知道!谢谢!!!在


Tags: andto代码numberinputrawprinthigh
3条回答

您需要将raw_input返回的字符串转换为数字。你也可以在整个游戏中使用一个循环来防止代码重复。另一件事是,在检查if条件中的number == compnumber之后,就不必在其他部分检查{}:

# ....

for i in range(3):
    number = int(raw_input ("Pick a number between 1 and 10!: " ))
    if number == compnumber :
        print (winner)
        exit(0)
    elif number > compnumber :
        print (loser_high)
    elif number < compnumber :
        print (loser_low)
    print "Guess again!"

我怀疑问题是原始输入是一个字符串,而随机值是一个整数。尝试将第7行改为:

number = int(raw_input("Pick a number between 1 and 10!: ").strip())

这种修改有两个作用:

  • 删除输入值周围的空白(使用.strip()
  • 将字符串转换为整数类型(使用int()

您还需要在其他行中执行类似的操作,在这些行中,您需要接受用户输入。在

您的问题是raw_input()返回一个字符串,random.randint()返回一个整数。在python2中,比较不同类型的对象是合法的,字符串的比较总是高于整数。在

您需要将用户输入转换为ints,这样它就可以工作了。在

guess = int(raw_input())

另外,不应该通过复制/粘贴大致相同的代码三次来实现循环。使用forwhile循环:

^{pr2}$

相关问题 更多 >