如果提供的答案不正确,请使用 while 循环调用“input”

Recall `input` with a while loop if an incorrect answer is supplied

当我使用 continue 时,

Python 不会 return 进入封闭循环,因为我无法捕捉到错误。

以下循环应提示用户输入我设置的两个通用名称:GeorgeDavid。我想设置它,以便 Anaconda 询问用户的姓名。如果他们输入 George,它会显示 Hi George。如果他们输入 David,它会显示 Hi David

如果用户输入任何其他名称,它会回调循环重试。我仍然是 Python 的初学者,这里显示了我对控制流的了解。

我知道 continue 仅适用于 while 条件。我的代码是这样写的:否则,虽然名称不是 GeorgeDavid,但触发 continue,它应该进入封闭循环(如果名称不是 DavidGeorge,再问一次名字)。

name = ''
if name != 'David' and name != 'George':
    print('What is your name?')
    name  = input()
    if name == 'David':
        print('Hi David')
    elif name == 'George':
        print('Hi George')
    else:
        while name != 'George' or 'David' :
            continue

您混淆了 whileif。实际上有多种方法可以解决这个问题:

name = ''
while True:
    print('What is your name?')
    name = input()
    if name == 'David':
        print('Hi David')
        break
    if name == 'George':
        print('Hi George')
        break

或者

name = ''
while name != 'David' and name != 'George':
    print('What is your name?')
    name = input()
if name == 'David':
    print('Hi David')
elif name == 'George':
    print('Hi George')

或者更好的是,您可以使用 in 检查 name 是否是所有接受名称的 set 中的一个元素。对于 print 调用,您不必再次显式编写 DavidGeorge,但可以使用新变量 name:

name = ''
while name not in {'David', 'George'}:
    print('What is your name?')
    name = input()
print('Hi {}'.format(name))
while True:
    print('what is your name?')
    name  = input()
    if name == 'David':
        print('hi david')
        break
    elif name == 'George':
        print('hi george')
        break

您不需要在此代码中使用 continuecontinue 通常用于跳过不需要 运行 进一步满足特定条件的密集步骤。
例如:

while True:
    x = float(input('Enter a number: '))
    if x > 1023: 
        print (f'{x} is too large to compute') 
        #OverflowError: (34, 'Result too large')
        continue
    print (2**x) #Max: 2**1023
    break