[英]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.