我不知道如何重新运行某段代码:
print('Welcome to your currency converter\n Please choose your starting currency from the four options:')
currency1=input('(GDP) = Pound Sterling £ \n(EUR) = Euro € \n(USD) = US Dollar ($) \n(JPY)= Japanese Yen ¥\n').lower()
if currency1!='gdp' or 'eur' or 'usd' or 'jpy':
print('Sorry not accepted try again')
当代码打印Sorry not accepted try again
时,我想再次启动代码。我该怎么做呢?
答案 0 :(得分:3)
您希望使用while
循环来继续运行代码“而”它无效:
while True:
currency1 = input('(GDP) = Pound Sterling £ \n(EUR) = Euro € \n(USD) = US Dollar ($) \n(JPY)= Japanese Yen ¥\n').lower()
if currency1 not in ('gdp', 'eur', 'usd', 'jpy'):
print('Sorry not accepted try again')
else:
break
注意: currency1!='gdp'or'eur'or'usd'or'jpy'
不符合您的想法。使用上面的in
方法
根据abarnert的评论编辑
答案 1 :(得分:3)
官方常见问题解答包含三个选项,虽然您可能永远找不到它,因为它是在Why can't I use an assignment in an expression的问题下:
首先,有while True:
print('Welcome to your currency converter\n Please choose your starting currency from the four options:')
while True:
currency1=input('(GDP) = Pound Sterling £ \n(EUR) = Euro € \n(USD) = US Dollar ($) \n(JPY)= Japanese Yen ¥\n').lower()
if currency1 not in ['gdp','eur','usd','jpy']:
print('Sorry not accepted try again')
else:
break
对于顽固的C程序员来说,这可能看起来很奇怪,他们被告知break
(如早期return
和类似的功能)很糟糕。但是Python不是C.(更不用说现在,甚至MISRA建议在新的C99代码中使用break
...)您可以使用break
并设置{{1}来避免使用while not done:
而不是done = True
,但没有优势,只会让你的代码变得更长,更复杂。
接下来,有break
while <condition>:
正如常见问题解答所述,这“似乎很有吸引力,但通常不那么健壮”:
问题在于,如果你改变主意如何获得下一行(例如你想将它改成sys.stdin.readline()),你必须记住改变程序中的两个位置 - 第二次出现隐藏在循环的底部。
最后,正如FAQ所说,“最好的方法是使用迭代器,使用print('Welcome to your currency converter\n Please choose your starting currency from the four options:')
currency1 = input('(GDP) = Pound Sterling £ \n(EUR) = Euro € \n(USD) = US Dollar ($) \n(JPY)= Japanese Yen ¥\n').lower()
while currency1 not in ['gdp', 'eur', 'usd', 'jpy']:
print('Sorry not accepted try again')
currency1 = input('(GDP) = Pound Sterling £ \n(EUR) = Euro € \n(USD) = US Dollar ($) \n(JPY)= Japanese Yen ¥\n').lower()
语句循环遍历对象。”
当你已经拥有一个迭代器,或者可以轻松地构建一个迭代器时,这很棒。但是当你不这样做时,它可能会增加比你保存更多的复杂性。我认为就是这种情况。例如,这并不比其他选项简单:
for
答案 2 :(得分:0)
比其他答案推荐的更好的方法是将条件放在while语句中,如下所示:
print('Welcome to your currency converter\n Please choose your starting currency from the four options:')
currency1 = input('(GDP) = Pound Sterling £ \n(EUR) = Euro € \n(USD) = US Dollar ($) \n(JPY)= Japanese Yen ¥\n').lower()
while currency1 not in ['gdp', 'eur', 'usd', 'jpy']:
print('Sorry not accepted try again')
currency1 = input('(GDP) = Pound Sterling £ \n(EUR) = Euro € \n(USD) = US Dollar ($) \n(JPY)= Japanese Yen ¥\n').lower()