如果提供了错误的答案,则使用while循环调用`input`

时间:2019-01-03 02:42:09

标签: python loops input while-loop continue

当我使用continue时,Python不会返回到封闭循环,原因是我无法捕获错误。

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

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

我知道continue仅适用于while条件。我的代码是这样写的:否则,虽然名称不是GeorgeDavid,但触发continue,这应该转到封闭循环(如果名称不是{{1} }或David,再次输入名称。

George

2 个答案:

答案 0 :(得分:0)

您混在一起了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))

答案 1 :(得分:0)

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