【发布时间】:2016-01-31 16:48:59
【问题描述】:
在满足嵌套 for 循环中的某些条件后,我正在寻找一种更 Pythonic 的方式来继续 while 循环。对我有用的非常笨重的代码是:
tens = ['30','40','50','60','70','80','90','00']
z=0
while z==0:
num = input('Please enter a number: ')
z=1
for x in tens:
if num[0]=='0' or x in num:
print('That was an invalid selection, please try again.\n')
z=0 # There has GOT to be a better way to do this!
break
print(num+' works, Thank You!')
我可以使用 this question 中回答的 try/except :
tens = ['30','40','50','60','70','80','90','00']
while True:
num = input('Please enter a number: ')
try:
for x in tens:
if num[0]=='0' or x in num:
print('That was an invalid selection, please try again.\n')
raise StopIteration
except:
continue
break
print(num+' works, Thank You!')
我面临的挑战是
a) 当 if 满足时继续 while 循环(请求新的输入)(换句话说,在同一步骤中中断 for 循环并继续 while 循环)
b) 对每个新输入进行测试,从头开始运行 tens 迭代。
注意:这个问题与 Reddit Challenge #246 Letter Splits
更新:结合 Håken Lid 提供的答案,代码变为
tens = ['30','40','50','60','70','80','90','00']
while True:
num = input('Please enter a number: ')
if num[0]=='0' or any(t in num for t in tens):
print('That was an invalid selection, please try again.\n')
continue
break
print(num+' works, Thank You!')
我还没有解决“从嵌套的 for 循环中断/继续”的问题,但是用 any() 函数替换循环对我来说肯定有用。
【问题讨论】: