Collatz Sequence: Automate the Boring Stuff with Python Chap



这是我的工作代码:

number = int(input())
while number > 1:
    if number % 2 == 0:
        number = int(number) // 2
        print (number)
    elif number % 2 == 1:
        number = 3 * int(number) + 1
        print (number)

现在我正在尝试添加异常,如果用户输入具有非整数值,它应该打印"输入一个数字"

while True:
    try:
        number = int(raw_input())
        break
    except ValueError:
        print("Enter a number!")
while number > 1:
    ....

编辑:正如Anton的评论中所述,在Python 2中使用raw_input,在Python 3中使用input

我是一个完整的初学者,所以我会感谢各种提示。这是我设法解决问题的方法,目前它似乎工作正常:

def collatz(number):
    
    if number%2 == 0:
        return number // 2
    else:
        return 3*number+1
        
print ('Enter a number:')
try:
    number = int(input())
    while True:            
            if collatz(number) != 1:
                number= collatz(number)
                print(number)
            else:
                print('Success!')
                break        
except ValueError:
    print('Type an integer, please.')

您可以检查exceptValueError。从文档中:

异常ValueError 当内置操作或函数收到具有正确类型但不适当的值的参数,并且情况未由更精确的异常(如 IndexError)描述时引发。

try:
    number = int(input())
    while number > 1:
        if number % 2 == 0:
            number = int(number) // 2
            print (number)
        elif number % 2 == 1:
            number = 3 * int(number) + 1
            print (number)
except ValueError:
    print('Enter a number')
你可以

这样做-

 while number != 1:
    try:
        if number % 2 == 0:
           number = int(number) // 2
           print (number)
        elif number % 2 == 1:
           number = 3 * int(number) + 1
           print (number)
     except ValueError:
        print('Enter a number')
        break
def collatz(number):
    if number % 2 == 0:
        return number // 2
    else:
        return 3 * number + 1
while True:
    try:
        value = int(input("Eneter a number: "))
        break
    except ValueError:
        print("enter a valid integer!")

while value != 1:
    print(collatz(value))
    value = collatz(value)
def coll(number):
    while number !=1:
        if number%2==0:
            number= number//2
            print(number)
        else:
            number= 3*number+1
            print(number)
while True:
    try:
        number = int(input("Enter the no:"))
        break
    except ValueError:
        print("Enter a number")

print(coll(number))

我是这样做的:

# My fuction (MINI-Program)
def collatz(number):
    if number % 2 == 0:
        return number // 2
    else:
        return 3 * number + 1
# try & except clause for errors for non integers from the users input
try:
    userInput = int(input("Enter a number: "))
    # Main loops till we get to the number 1
    while True:
        number = collatz(userInput)
        if number !=1:
            userInput = number
            print(userInput)
        else:
            print(1)
            break
except ValueError:
    print("Numbers only! Restart program")

最新更新