当我使用continue
时,Python不会返回到封闭循环,原因是我无法捕获错误。
以下循环应提示用户输入我设置的两个通用名称:George
和David
。我想要设置它,以便Anaconda询问用户他们的名字。如果他们输入George
,则会显示Hi George
。如果他们输入David
,则显示Hi David
。
如果用户输入任何其他名称,它将回叫循环以重试。我仍然是Python的初学者,我对这里的控制流程的了解显示了。
我知道continue
仅适用于while
条件。我的代码是这样写的:否则,虽然名称不是George
或David
,但触发continue
,这应该转到封闭循环(如果名称不是{{1} }或David
,再次输入名称。
George
答案 0 :(得分:0)
您混在一起了while
和if
。实际上有多种解决方法:
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
调用,您不必再次显式写入David
和George
,但是可以使用新变量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
此代码中不需要continue
。 continue
通常用于跳过需要满足某些条件的不需要进一步运行的密集步骤。
例如:
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