Python 猜谜游戏获胜';不起作用,还会抛出奇怪的语法错误

Python 猜谜游戏获胜';不起作用,还会抛出奇怪的语法错误,python,syntax,logic,Python,Syntax,Logic,我花了1.5个小时的大部分时间在这件事上,但我就是不能让它工作。在它开始抛出这些奇怪的语法错误之前,它会继续说“猜到低,再试一次”。它甚至没有在shell中运行,因为我一直在收到这些错误 代码如下: import random gend = random.randint(1,100) #make random number def compare(gend,guess): #start function guessnum = 0 #set guessnumber to zero for

我花了1.5个小时的大部分时间在这件事上,但我就是不能让它工作。在它开始抛出这些奇怪的语法错误之前,它会继续说“猜到低,再试一次”。它甚至没有在shell中运行,因为我一直在收到这些错误

代码如下:

import random
gend = random.randint(1,100) #make random number
def compare(gend,guess): #start function

    guessnum = 0 #set guessnumber to zero for later printing

    if gend < guess: #compare gend number against guessed number
        int(raw_input("Too high. Try again. ")) #request another number for user
        guessnum = guessnum + 1 #add 1 to guessnumber, for later printing
    elif gend > guess: #compare gend number against guessed number
        int(raw_input("Too low. Try again. "))#request another number for user
        guessnum = guessnum + 1 #compare gend number against guessed number
    elif gend == guess: #if guessed number=gend, do this
            keepalive = 'much spook' #stop the while loop
            print "Congratulations! You got it in %d guess." % (guessnum)#print da amount of guesses

keepalive = 'rekt' #keepalive substitute

print 'Time to play a guessing game' #no exp needed

guess = int(raw_input("Enter a number between 1 and 100: ") #start off the game

while keepalive == 'rekt': #while loop that does all the work
    compare(gend,guess) #funcion werk

raw_input("Any key to exit") #keep console open so it doesnt autoclose -.-
随机导入
gend=random.randint(1100)#生成随机数
def比较(性别、猜测):#启动功能
guessnum=0#将guessnumber设置为零,以便以后打印
如果性别<猜测:#将性别数字与猜测的数字进行比较
int(原始输入(“太高。请重试”)#为用户请求另一个号码
guessnum=guessnum+1#将1添加到guessnumber,以便以后打印
elif gend>guess:#将gend数字与猜测的数字进行比较
int(原始输入(“太低。请重试”)#为用户请求另一个号码
guessnum=guessnum+1#将性别数字与猜测的数字进行比较
elif gend==猜测:#如果猜测的数字=gend,请执行此操作
keepalive='much spook'#停止while循环
打印“祝贺您!您在%d个猜测中获得了它。”%(guessnum)#打印大量猜测
keepalive='rekt'#keepalive替换
打印“玩猜谜游戏的时间”#无需经验
guess=int(原始输入(“输入1到100之间的数字”)#开始游戏
while keepalive=='rekt':#while循环完成所有工作
比较(性别,猜测)#函数werk
原始输入(“任何退出键”)#保持控制台打开,以免自动关闭--

我还要感谢你们的帮助,这无疑是绝大多数语言的最佳学习资源。

语法错误上方的一行缺少一个右括号

guess = int(raw_input("Enter a number between 1 and 100: ") #start off the game
                                                           ^

语法错误是由于前一行造成的。Python只能告诉您它注意到什么地方出了问题,而这不一定是问题实际恶化的地方。在
guess=int(原始输入(“输入一个介于1和100之间的数字”)
中缺少一个结束语

它一直说“太低,再试一次”是由于两个错误:

  • 当你要另一个数字时(你读一个数字,解析它,然后扔掉它),你不会分配给
    guess
    ,所以
    guess
    永远不会改变
  • 在函数内部,
    keepalive='moy spook'
    不会改变循环外部使用的相同的
    keepalive
    。有几种方法可以解决这个问题,但哪种方法合适取决于您以前的经验和您正在学习的材料-请咨询它,看看是否提到过类似的内容

当您遇到错误时,不要只告诉我们它会引发错误。向我们显示跟踪和确切的错误消息(即复制输出),这会使调试更容易。缩进可能会出错?请将文本编辑器更改为使用空格而不是制表符。“这些错误”?那会是什么错误?@delnan对不起,这里是:c:\Users\ace\Documents\pythooon\practiceprobs>guessgame.py文件“c:\Users\ace\Documents\pythooon\practiceprobs\guessgame.py”,第23行while keepalive=='rekt':#完成所有工作的while循环^SyntaxError:无效语法您看不到注释中的carot指向何处,但它指向while中的'e'。步骤#1修复语法错误。使用支持智能缩进并显示不匹配括号的编辑器。啊,感谢您的解释关于keepalive不是全局的,我也知道我从来没有在函数中指定原始输入来猜测。我将测试它并发布结果。呃,不起作用。修复了括号,这是一个愚蠢的错误。我在函数的开头添加了“全局keepalive”,这应该已经修复了。仍然输出“太低…”对于我输入的任何数字。