如何在我的python代码中使用while循环

时间:2018-06-13 03:17:10

标签: python python-3.x

Q)编写一个名为collat​​z()的函数,该函数有一个名为number的参数。如果数字是偶数,则collat​​z()应打印数字// 2并返回此值。如果一个数字是奇数,那么collat​​z()应该打印并返回3 *数字+ 1.然后编写一个程序,让用户输入一个整数并保持调用 对该数字进行collat​​z(),直到函数返回值为止。

这是我为上述问题编写的代码,但我需要一些关于如何使用while循环的小帮助,所以当我得到一个ValueError而不是破坏程序时我希望程序重新执行程序而不是而不仅仅是显示print语句。

try:
def collatz(number):
    if number % 2 == 0:
        print(number // 2)
        return number // 2
    elif number % 2 == 1:
        print(3 * number + 1)
        return 3 * number + 1
x = int(input("Enter a number: "))
while x != 1:
    x = collatz(x)
except ValueError:
    print("Please enter a numerical value")

3 个答案:

答案 0 :(得分:1)

您可以修改 HandlingExceptions - Python Wiki

中的代码
def collatz(number):
    if number % 2 == 0:
        print(number // 2)
        return number // 2
    elif number % 2 == 1:
        print(3 * number + 1)
        return 3 * number + 1

has_input_int_number = False 
while has_input_int_number == False: 
    try: # try to convert user input into a int number 
        x = int(input("Enter a number: "))
        has_input_int_number = True # will only reach this line if the user inputted a int
        while x != 1:
            x = collatz(x)
    except ValueError: # if it gives a ValueError
        print("Error: Please enter a numerical int value.")

使用示例:

Enter a number:  a
Error: Please enter a numerical int value.
Enter a number:  1.5
Error: Please enter a numerical int value.
Enter a number:  5
16
8
4
2
1

答案 1 :(得分:0)

def collatz(number):
    if number % 2 == 0:
        print(number // 2)
        return number // 2
    elif number % 2 == 1:
        print(3 * number + 1)
        return 3 * number + 1
x = int(input("Enter a number: "))
while x != 1:
    try:
        x = collatz(x)
    except ValueError:
        print("Please enter a numerical value")

答案 2 :(得分:0)

如果没有分层,请使用while Truebreak

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

def func(x):
    while True:
        x = collatz(x)
        if x==1:
            break

def run():
    while True:
        try:
            x = int(input("Input a positive number: "))
            assert x>0
            func(x)
            break
        except Exception as exc:
            #print("Exception: {}".format(exc))                          
            pass

if __name__ == "__main__":
    run()

enter image description here