Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有Tkinter的情况下捕获Python中的enter键_Python_Python 2.7 - Fatal编程技术网

如何在没有Tkinter的情况下捕获Python中的enter键

如何在没有Tkinter的情况下捕获Python中的enter键,python,python-2.7,Python,Python 2.7,如果按下enter键,我需要用Python重新启动程序。我发现了这个问题和解决方案:。然而,当我在Google上搜索event.keysym时,它似乎与Tkinter有关,我想我没有 当我尝试使用该解决方案时,出现了一个错误: Traceback (most recent call last): File "/home/q/Desktop/PigsAndBulls.py", line 52, in <module> if event.keysym == 'Return':

如果按下enter键,我需要用Python重新启动程序。我发现了这个问题和解决方案:。然而,当我在Google上搜索event.keysym时,它似乎与Tkinter有关,我想我没有

当我尝试使用该解决方案时,出现了一个错误:

Traceback (most recent call last):
  File "/home/q/Desktop/PigsAndBulls.py", line 52, in <module>
    if event.keysym == 'Return':
NameError: name 'event' is not defined
回溯(最近一次呼叫最后一次):
文件“/home/q/Desktop/PigsAndBulls.py”,第52行,在
如果event.keysym==“Return”:
NameError:未定义名称“事件”
我是一个完全的新手,刚刚在Coursera上完成了与Dr.Severance的一门课程

这是我写的在工作中玩猪和牛的程序。一切都按我的要求进行。唯一的问题是,如果按下除“回车”按钮以外的任何键,则退出程序

while True: 
    while True:
        word= raw_input("Enter a four letter English word with no repeating letters:  ")
        print
        if len(word) <> 4:
            print "What part of 'four letter word' did you not understand? Try again."
            print
            continue    
        else: break

    guesses = 0

    while True:
        correct = 0
        position = 0
        cnt = 0
        result = 0

        guess= raw_input("Enter a guess:  ")
        guesses = guesses+1
        #print "guessses", guesses 
        for w in guess:
            cnt = cnt+1
            #print "cnt", cnt
            position=0
            for g in word:
                position=position+1
                #print "position", position
                if g == w:
                    correct = correct+1
                    if position == cnt:
                        result = result+1
                        #print "result", result
        print
        print "Number correct:", correct
        print "Number in the right position:", result
        print
        if correct<>4 and result<>4:
            print "Give me another guess" 
            print        
            continue
        elif correct == 4 and result == 4:
            print
            print "YOU WIN"
            print
            print "It took you", guesses, " guesses to get it right"
            print
            break

    answer= raw_input("press  ""enter"" to play again")
    if event.keysym == 'Return':
       continue
    else:
        exit

    print
    print
为True时:
尽管如此:
word=原始输入(“输入一个四个字母的英语单词,不包含重复字母:”)
打印
如果len(word)4:
打印“你不懂‘四个字母单词’的哪一部分?再试一次。”
打印
继续
其他:休息
猜测=0
尽管如此:
正确=0
位置=0
cnt=0
结果=0
猜测=原始输入(“输入猜测:”)
猜测=猜测+1
#打印“猜测”,猜测
对于猜测中的w:
cnt=cnt+1
#打印“cnt”,cnt
位置=0
对于文字中的g:
位置=位置+1
#打印“位置”,位置
如果g==w:
正确=正确+1
如果位置==cnt:
结果=结果+1
#打印“结果”,结果
打印
打印“数字正确:”,正确
打印“正确位置的编号:”,结果
打印
如果更正4和结果4:
打印“给我另一个猜测”
印刷品
持续
elif correct==4,result==4:
打印
打印“你赢了”
打印
打印“花了你的时间”,猜测,“猜对了”
打印
打破
回答=原始输入(“按“回车”再次播放”)
如果event.keysym==“Return”:
持续
其他:
出口
打印
打印
然后我想,也许我已经用字符串变量“answer”替换了“event”,但是我得到了这个错误:

Traceback (most recent call last):
  File "/home/q/Desktop/PigsAndBulls.py", line 52, in <module>
    if answer.keysym == 'Return':
AttributeError: 'str' object has no attribute 'keysym'
回溯(最近一次呼叫最后一次):
文件“/home/q/Desktop/PigsAndBulls.py”,第52行,在
如果answer.keysym==“Return”:
AttributeError:'str'对象没有属性'keysym'
此外,如果我按下任何其他键,它只是在空闲状态下打印,程序不会退出


顺便说一句,我知道必须有更好的方法使用列表或词典对此进行编程,但我只知道如何进行编程。

enter
将生成一个零长度的单词。这是你的第一张支票

然而,如果您想要捕捉一个单一的击键,比如C中的getch(),它要复杂得多,例如

另一种选择是捕获^C(控制-C):

试试看:
回答=原始输入('Control-C退出,再次播放:')
如果len(答案)>0:
raise(ValueError(“意外输入”))
其他:
持续
除外(键盘中断、值错误):
系统出口(0)

是的,我发现并阅读了它,但大部分内容远远超出了我的技能水平,我不理解它,也不知道如何使用它。我能理解的一条评论是“这在Python中是不可能的”。因此我将放弃这个想法,切换到Python可以读取的字符,然后使用“try”和“except”退出,如果没有按下:可能类似于“键入小写的“more”再次播放。任何其他单词或字符都将终止程序”在我留下我的评论后,我意识到你实际上有一个很棒的想法,我实施了它。它工作得很好。非常感谢。很抱歉,我没有足够的声誉来增加你的声誉。你的代码比我的好得多,所以我剪切并粘贴了它,效果也很好!!再次感谢你。
try:
    answer = raw_input('Control-C to exit, <ENTER> to play again: ')
    if len(answer) > 0:
        raise(ValueError('Unexpected input'))
    else:
        continue
except (KeyboardInterrupt, ValueError):
    sys.exit(0)