首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Collatz序列处理异常处理

Collatz序列处理异常处理
EN

Stack Overflow用户
提问于 2021-09-28 10:58:07
回答 2查看 85关注 0票数 0

我刚开始学习python 3,在尝试理解异常处理时遇到了一些问题。我正在阅读一本教程书,它给了我一个叫做“Collatz序列”的小项目。

它本质上是一个程序,它通过一些简单的数学计算任何整数到'1‘。

我已经能够成功地使程序工作,直到用户输入任何东西,除了一个整数。起初,我得到的是ValueError,它通过使用the :进行了更正。

现在我似乎得到了NameError:没有定义名称'number‘

任何帮助都是非常感谢的。只是想了解异常处理。

代码语言:javascript
复制
def collatz(number):
    if number % 2 == 0:
        even_number = number//2
        print(even_number)
        return even_number
    elif number % 2 == 1:
        odd_number = (number * 3 + 1)
        print(odd_number)
        return odd_number

try:
    number = int(input('Enter Number: '))
except ValueError:
    print('Please enter an integer')
while int(number) != 1:
    number = collatz(number)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-28 11:09:09

一种可能是使用布尔值跟踪整数是否作为输入。考虑以下(修改后的)代码:

代码语言:javascript
复制
def collatz(number):
    if number % 2 == 0:
        even_number = number//2
        print(even_number)
        return even_number
    elif number % 2 == 1:
        odd_number = (number * 3 + 1)
        print(odd_number)
        return odd_number

# Keep asking for input until the user inputs an integer
got_integer = False
while not got_integer:
    try:
        number = int(input('Enter Number: '))
        got_integer = True
    except ValueError:
        print('Please enter an integer')

while int(number) != 1:
    number = collatz(number)

如您所见,我定义了一个布尔变量got_integer。最初,我将其值设置为False。在这个变量定义之后是一个while循环,它一直在执行循环体,直到got_integer的值是True为止。现在,您只需在一个完整的输入上将got_integer的值设置为True (即,如果行number = int(input('Enter Number: '))的执行成功)。

票数 0
EN

Stack Overflow用户

发布于 2021-09-28 11:08:01

如果遇到异常,则必须在try块中包含逻辑。然后当你面对异常时你就可以处理它了。在您的情况下,您可以在下面的try中使用while块。根据异常情况,您可以在下面处理它们,就像您已经做的那样。

代码语言:javascript
复制
def collatz(number):
    if number % 2 == 0:
        even_number = number//2
        print(even_number)
        return even_number
    elif number % 2 == 1:
        odd_number = (number * 3 + 1)
        print(odd_number)
        return odd_number

try:
    number = int(input('Enter Number: '))
    if number != 1:
        number = collatz(number)
except ValueError:
    print('Please enter an integer')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69360463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档