Python 输入语句是';t在调试过程中求值-触发尝试,但
我正在尝试用Python编写一个基本的tic-tac-toe。我的一个功能是获取用户输入的1到9之间的数字。如果用户输入一个非整数或一个不在1和9之间的数字,它将返回一个错误。它只是一种尝试,只是为了避免担心类型转换Python 输入语句是';t在调试过程中求值-触发尝试,但,python,python-3.x,visual-studio-code,Python,Python 3.x,Visual Studio Code,我正在尝试用Python编写一个基本的tic-tac-toe。我的一个功能是获取用户输入的1到9之间的数字。如果用户输入一个非整数或一个不在1和9之间的数字,它将返回一个错误。它只是一种尝试,只是为了避免担心类型转换 def get_move(): print("Your move ...") while True: try: move = input("Type a number from 1-9: &qu
def get_move():
print("Your move ...")
while True:
try:
move = input("Type a number from 1-9: ")
if move.isnumeric():
if (0 < int(move) < 10):
break
else:
print("The number is outside the range. Try again.")
else:
if (move.tolower == "quit") or (move.tolower == "exit"):
exit()
except:
print("Not a valid integer, try again.")
return move
致:
并将except
子句更改为except(ValueError,TypeError)
。现在我收到以下错误:
Exception has occurred: EOFError
EOF when reading a line
File "[...]tictacpy.py", line 18, in get_move
move = input("Type a number from 1-9: ")
File "[...]tictacpy.py", line 46, in <module>
move = get_move()
发生异常:EOFError
读一行时的EOF
文件“[…]tictacpy.py”,第18行,在get_move中
移动=输入(“键入1-9之间的数字:”)
文件“[…]tictacpy.py”,第46行,在
move=get_move()
最有可能发生这种情况,因为在调试器中,您没有用于标准输入的控制台,因此调用
input()
将出错(我不知道具体的VS代码,所以我在这里猜测,但这是一个合理的原因)
在任何情况下,我强烈建议不要使用除子句以外的所有捕获,因为这会使可能发生的错误保持沉默,并错误地处理这些错误,而这些错误并不是预期流程的一部分
首先,我将您的except
改为except(ValueError,TypeError)
,以便它只捕获由错误输入/类型转换问题导致的错误。然后,您将能够看到真正的错误是什么
另外,请注意,没有“move.tolower”这样的东西-您可能指的是move.lower()
。也许这就是你的错误?捕获所有例外是个坏主意,尤其是如果它们只是丢弃了实际错误。您如何知道异常是由输入的无效整数引起的?您应该捕获特定的错误,而除
之外的一般捕获所有应该可以为您提供一些实际潜在错误的指示。此问题是由降低
(不是有效的str
属性或方法)-如果move.lower()=“退出”或move.lower()=“退出”,则将其设置为:
对于“不可复制或由打字错误引起”的接近投票,我已经纠正了打字错误,但问题仍然没有解决。此外,我非常感谢反对者也能澄清问题需要改进的地方。如果您不告诉我问题出了什么问题,我该如何提高问题质量?请看一下此搜索中的问题:谢谢,我在tolower
中使用了Visual Basic的语法。尽管如此,我仍然收到一个错误-我已经按照您的建议更改了Except子句,现在调试器返回异常:读取get\u move move=input中第18行的行文件“…tictacpy.py”(“从1-9键入一个数字:”)文件“…tictacpy.py”,第46行的move=get\u move()
Yep,非常确定这意味着stdin已在调试器中结束/关闭。了解如何获取vscode以允许您键入标准输入。
if move.lower() == "quit" or move.lower() == "exit":
exit()
Exception has occurred: EOFError
EOF when reading a line
File "[...]tictacpy.py", line 18, in get_move
move = input("Type a number from 1-9: ")
File "[...]tictacpy.py", line 46, in <module>
move = get_move()