Python 如何实现“如果发生错误,请不要实现此代码”?

Python 如何实现“如果发生错误,请不要实现此代码”?,python,if-statement,Python,If Statement,我想用python编写一段代码,基本上可以实现以下功能: 如果在实现inta时出错,请打印“有效字符” elif在实现inta打印“无效字符”时未发生错误 a是一个输入 我想做一个简单的刽子手游戏,如果输入不是一个字母,我想显示一个特定的信息。我尝试使用if a==int,但输入总是一个字符串。探索除设计之外的尝试 try: # do something here except (ErrorName): # error catching print("invalid chara

我想用python编写一段代码,基本上可以实现以下功能:

如果在实现inta时出错,请打印“有效字符” elif在实现inta打印“无效字符”时未发生错误 a是一个输入


我想做一个简单的刽子手游戏,如果输入不是一个字母,我想显示一个特定的信息。我尝试使用if a==int,但输入总是一个字符串。

探索除设计之外的尝试

try:
   # do something here
except (ErrorName):
   # error catching
   print("invalid character")
请尝试包含可复制的代码,或伪代码的代码块,以便其他人可以更轻松地跟随

通常情况下,您会使用a来处理错误,但因为您实际上没有收到错误-您只想知道输入是否为字母字符,所以您会使用该函数

guess = input()
if not guess.isalpha():
    print('You must supply an alphabetical character')
else:
    #the rest of your code would go here
现在来找点乐子。这就是您将如何实现您所要求的内容,但是,请注意,这不会捕获标点符号、表情符号和任何其他非数字和非字母顺序的随机字符

guess = input()
isOk = False

try:
   int(guess)
except ValueError:
    isOk = True

if not isOk:
    print("you cannot enter a number")
我不知道这是否是一个好主意,因为在这里添加else是Python的一个非常奇怪的特性,但是您可以从技术上将上述代码压缩为

guess = input()
try:
   int(guess)
except ValueError:
    # All good
    pass
else:
    # we where able to cast to an integer = bad
    print("you cannot enter a number")

但我可能永远不会在生产代码中这样做。还有一个重要的提示。当您了解try-except子句时。即使你可以这样做,除了:确保你总是陈述你正在抓到的东西。在这种情况下,除了ValueError之外,还有一个ValueError:。如果您不这样做,您将抑制所有错误,并且您有可能在一个重要错误被抑制的情况下陷入困境,并且您不知道程序运行不正确的原因。

如果inta引发异常,则使用try/catchTesting不是一个好的测试,即a是一个字母。考虑INT=。也许测试isalpha是一种更好的方法。@Barmar如果输入不是字母,您有什么特别的原因推荐try/catch吗?我希望python能有函数来检查,毫无例外……建议使用isalpha……@AlexeiLevenkov我建议使用它,因为输入不是数字,输入不是字母。@Barmar我明白了。除了他们拥有的代码之外,OP实际上还包括了他们想要实现的东西。我相信你的意思是初始化isOk=False,而在except isOk=True?哎哟。在测试代码时,我不应该同时处理多个任务。谢谢你指出这一点。