KeyErrors和如何引发KeyError

10

我的作业要求我如果用户输入的键(文本)包含任何非字母字符,就引发一个键错误并重新提示。到目前为止,我有以下代码可以工作,但显然没有使用预期的try/except结构。

key=input("Please enter the key word you want to use: ")
ok=key.isalpha()
while (ok==False):
    print("The key you entered is invalid. Please try again")
    key=input("Please enter the key word you want to use")

4
这是一个不适合在 Stack Overflow 上提问的问题:(1)这是一道作业题,(2)提问者原来的代码语法上有错误,(3)没有明确的问题,(4)唯一的答案只是一个作业解决方案,没有解释任何内容。 - Mark E. Haase
1个回答

21

这不是适当使用KeyError的方式(它应该用于字典查找或类似情况),但如果这是你被要求做的事情,那么可以尝试像这样:

def prompt_thing():
    s = raw_input("Please enter the key word you want to use: ")
    if s == '' or not s.isalnum():
        print("The key you entered is invalid. Please try again")
        raise KeyError('non-alphanumeric character in input')
    return s

s = None
while s is None:
    try:
        s = prompt_thing()
    except KeyError:
        pass

1
OP只提供了一个代码片段,我们不知道上下文...大方地假设后续行创建了一个字典... - MarkHu
2
不幸的是,“an inappropriate”的快速阅读可能会被(误)解释为“an appropriate” - 我知道这是因为我很震惊,所以我重新阅读了答案(并看到我解释错误了!) - sage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接