首页 > 解决方案 > 有没有办法在 python 中转到特定的行或命令?

问题描述

我正在阅读使用 python 自动化无聊的东西并尝试解决实际问题的书籍。在这个项目中,我需要定义 collat​​z() 函数并打印代码中看到的结果,直到它得到 1。所以基本上我只需要输入一个数字,程序应该返回数字,直到它返回 1。程序工作正常,但我有一个问题如果我能做得更好:D。

我的问题是在使用 try: 和 except: 之后有没有办法在输入函数中输入字符串时不结束进程,而是在“您必须输入数字”下方获取消息并返回输入新数字或字符串并正常执行 while 循环。代码工作正常,只是想知道这是否可行,如果可以,怎么办?

def collatz(number):
    if number % 2 == 0:
        print(number // 2)
        return number // 2
    else:
        print(3 * number + 1)
        return 3 * number + 1



try:
    yourNumber = int(input('Enter number: '))
    while True:
        yourNumber = collatz(yourNumber)
        if yourNumber == 1:
            break

except ValueError:
    print('You must enter a number')

标签: pythoncollatz

解决方案


try/except内部放入一个循环中,这样except循环将继续,但成功时它将break

while True:
    try:
        yourNumber = int(input('Enter number: '))
    except ValueError:
        print('You must enter a number')
    else:
        break

while yourNumber != 1:
    yourNumber = collatz(yourNumber)

推荐阅读