我一直在尝试将一些代码转换为try语句,但我似乎无法正常工作。
这是伪代码中的代码:
start
run function
check for user input ('Would you like to test another variable? (y/n) ')
if: yes ('y') restart from top
elif: no ('n') exit program (loop is at end of program)
else: return an error saying that the input is invalid.
这是我在python 3.4中的代码(可以工作)
run = True
while run == True:
spuriousCorrelate(directory)
cont = True
while cont == True:
choice = input('Would you like to test another variable? (y/n) ')
if choice == 'y':
cont = False
elif choice == 'n':
run = False
cont = False
else:
print('This is not a valid answer please try again.')
run = True
cont = True
现在,将这个转换为try语句或者稍微改掉我的代码的正确方法是什么?
这不是所提到的引用帖子的副本,因为我试图管理两个嵌套语句,而不是只得到正确的答案。
答案 0 :(得分:1)
如果你想让你的代码更整洁,你应该考虑
while run:
而不是
while run == True:
并删除最后两行,因为再次将run
和cont
设置为True
是不必要的(它们的值没有改变)。
此外,我认为try - except
块在整数输入的情况下很有用,例如:
num = input("Please enter an integer: ")
try:
num = int(num)
except ValueError:
print("Error,", num, "is not a number.")
在你的情况下,虽然我认为坚持使用if - elif - else
块会更好。
答案 1 :(得分:0)
好的,作为一般情况,我会尽量避免尝试......除了块
不要这样做。使用正确的工具完成工作。
使用raise
表示您的代码无法(或不应该)处理该方案。
使用try-except
处理信号。
现在,将此转换为try语句的正确方法是什么?
不要转换。
您的代码中没有raise
的任何内容,因此try-except
没有任何意义。
在某种程度上改变我的代码的正确方法是什么?
摆脱你的旗帜变量(run
,cont
)。你有break
,使用它!
正如Python文档所说,这是传递do-while
的首选方式;不幸的是,我现在无法找到它链接它。
如果有人找到它,请随时编辑我的答案以包含它。
def main()
while True: # while user wants to test variables
spuriousCorrelate(directory) # or whatever your program is doing
while True: # while not received valid answer
choice = input('Would you like to test another variable? (y/n) ')
if choice == 'y':
break # let's test next variable
elif choice == 'n':
return # no more testing, exit whole program
else:
print('This is not a valid answer please try again.')