TypeError:getch()只取0个参数(给定1个)

时间:2015-06-02 20:44:56

标签: python-2.7

我有这段代码 我希望如果输入1,2,3,4以外的任何东西再次输入

import msvcrt
answer = msvcrt.getch()
while answer not in ['1','2','3','4']:
    answer = msvcrt.getch('Enter a valid option (1,2,3,4):  ')

输入列表中没有的任何内容会出现此错误:

TypeError: getch() takes exactly 0 arguments (1 given)

但我不知道为什么它给了我这个错误 任何帮助表示赞赏

3 个答案:

答案 0 :(得分:3)

错误文字是不言自明的。在第二行中,您正确调用了getch:

answer = msvcrt.getch()

为了使代码能够按预期进行操作,请将其更改为:

while answer not in ['1','2','3','4']:
    print 'Enter a valid option (1,2,3,4):  '
    answer = msvcrt.getch()

答案 1 :(得分:2)

错误消息的含义正是它所说的:msvcrt.getch()是一个不带参数的函数。

你在这里用一个参数调用它:

answer = msvcrt.getch('Enter a valid option (1,2,3,4):  ')

如果您要打印提示,请先使用单独的print来电。

答案 2 :(得分:0)

此行认为您尝试将值传递给getch,这是不允许的。

answer = msvcrt.getch('Enter a valid option (1,2,3,4):  ')

文档:https://docs.python.org/2/library/msvcrt.html

虽然你第一次使用getch很好,但第二次使用会产生错误。