使用Python-Collatz序列自动完成无聊的工作
我对任何类型的编码都非常陌生,目前使用的是python 3.3。我已经成功地在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
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)