首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带返回语句的Collatz序列

不带返回语句的Collatz序列
EN

Stack Overflow用户
提问于 2019-11-03 22:07:51
回答 1查看 38关注 0票数 0

这来自一本名为“用Python自动化枯燥的东西”的书。它要求读者:

a)仅使用一个参数

b)如果数字为偶数,则打印并返回数字// 2

c)如果number为奇数,则打印并返回3* number +1

d)函数应该一直被调用,直到函数返回值1。

我写的东西可以工作,但是我没有使用"return“命令,所以它是正确的吗?

代码语言:javascript
复制
def collatz():  
    print('Please enter a number: ')
    number = int(input())
    while number != 1:
        if (number % 2)==0: 
            number  = number / 2
            print(number)
            continue
        else:
            number = 3*number + 1
            print(number)
            continue
        break
collatz()
EN

回答 1

Stack Overflow用户

发布于 2019-11-04 10:26:11

你得到了所有正确的部分,但看起来a)和d)要求没有得到满足。一个小的重构--去掉inputwhile --应该能让你做到这一点:

代码语言:javascript
复制
def collatz(number):  # a) use one parameter
    if number % 2:
        next_num = 3 * number + 1
    else:
        next_num = number // 2
    print(next_num)
    return next_num


def run():
    number = int(input('Please enter a number: '))
    while number != 1:
        number = collatz(number)  # d) call the function repeatedly


run()

例如:

代码语言:javascript
复制
>>> run()
Please enter a number: 3
10
5
16
8
4
2
1

>>> run()
Please enter a number: 9
28
14
7
22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58680951

复制
相关文章

相似问题

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