Collatz序列:用Python自动化枯燥的东西第3章实践项目

Collatz序列:用Python自动化枯燥的东西第3章实践项目,python,Python,这是我的工作代码: 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) 现在我尝试添加一个例外,即如果用户输入的值不是整数值,它应

这是我的工作代码:

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)

现在我尝试添加一个例外,即如果用户输入的值不是整数值,它应该打印“输入一个数字”

您可以检查
值错误
中的
除外。发件人:

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

编辑:正如Anton在一篇评论中所指出的,在Python2中使用
raw_input
,在Python3中使用
input

您可以这样做-

 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(编号):
如果数字%2==0:
返回编号//2
其他:
返回3*number+1
打印('输入一个数字:')
尝试:
number=int(输入())
尽管如此:
如果collatz(数字)!=1:
编号=collatz(编号)
打印(数字)
其他:
打印('Success!')
打破
除值错误外:
打印('请键入一个整数')
def coll(数字):
而数字=1:
如果数字%2==0:
数字=数字//2
打印(数字)
其他:
数字=3*数字+1
打印(数字)
尽管如此:
尝试:
number=int(输入(“输入编号”))
打破
除值错误外:
打印(“输入数字”)
打印(coll(数字))
我是这样做的:

# 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")

使用
input()
,您更可能得到
SyntaxError
namererror
,而不是
ValueError
…这是针对python 3的Input
与python 2中的
raw\u Input
相同。欢迎使用堆栈溢出!感谢您提供此代码片段,它可能会提供一些有限的短期帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。
 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)
# 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")