Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python-Collatz序列自动完成无聊的工作_Python_Collatz - Fatal编程技术网

使用Python-Collatz序列自动完成无聊的工作

使用Python-Collatz序列自动完成无聊的工作,python,collatz,Python,Collatz,我对任何类型的编码都非常陌生,目前使用的是python 3.3。我已经成功地在python中通过以下方式准确地运行了Collatz序列: while True: # The main game loop. number = int(input('Enter number:\n')) def collatz(number): while number !=1: if number % 2==0: #even numbers number=numb

我对任何类型的编码都非常陌生,目前使用的是python 3.3。我已经成功地在python中通过以下方式准确地运行了Collatz序列:

while True: # The main game loop.
number = int(input('Enter number:\n'))  
def collatz(number):
    while number !=1:
        if number % 2==0: #even numbers
            number=number//2
            print(number)
        elif number % 2!=0: #odd numbers
            number=number*3+1
            print(number)
collatz(number)
except ValueError:
    print('Only integers accepted.')
但是,我不确定如何以及在何处添加ValueError strong,因为当用户输入非整数时,会出现如下情况:

while True: # The main game loop.
number = int(input('Enter number:\n'))  
def collatz(number):
    while number !=1:
        if number % 2==0: #even numbers
            number=number//2
            print(number)
        elif number % 2!=0: #odd numbers
            number=number*3+1
            print(number)
collatz(number)
except ValueError:
    print('Only integers accepted.')

我对python非常陌生,所以如果有任何答案可以提供一些解释,我将非常感激。谢谢

把它放在最上面。参数约束应该尽可能快地出现,这样您就不会浪费时间运行将要出错的代码

def进度(百分比):
如果百分比<0或百分比>100:
升值误差
#逻辑

我假设您指的是,验证部分必须在开始时完成

    while True: # The main game loop.

        try:
            number = input('Enter number:\n')
            number = int(number)

        except ValueError:
            print("Only integers accepted! Please try again ...")
        else:
            collatz(number)
#output:
#
#Enter number:
#abc
#Only integers accepted! Please try again ...
#Enter number:
#5
#16
#8
#4
#2
#1
#Enter number:

但程序将继续循环,需要终止条件。

您是指异常处理吗?注意,这会在调用collatz()后检查参数,并在适当时引发ValueError。这仍然需要捕获异常,假设您希望提示用户输入有效的输入,并且不会因为引发异常而导致程序崩溃。中提供的示例在调用collatz()之前检查参数,并循环返回以提示用户再次输入。您对为什么会出现参数约束的解释对于像我这样的新手非常有用,非常感谢!我同意阿维什卡的回答,因为我已经了解了try语句,但我也很想了解百分比是如何工作的。我对参数约束的出现早有预感,这里的
percentage
只是传递给
progress()
函数的一个参数。在
if
语句中,它检查百分比是否在范围内。如果它不在范围内,它将引发exceptionError:Value错误并终止进程。
number = None

while number != int():
    try:
        number = int(input("Enter number: "))
        break
    except:
        print("Enter a valid Number")

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

collatz(number)