繁体   English   中英

Collat​​z 序列:使用 Python 第 3 章练习项目自动化无聊的事情

[英]Collatz Sequence: Automate the Boring Stuff with Python Chapter 3 Practice Project

这是我的工作代码:

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.')

您可以检查except ValueError 文档

异常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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM