Python3 中Collatz sequence的问题?

  • 回答 (1)
  • 关注 (0)
  • 查看 (44)

def collatz(n):

if n % 2 == 0:

n=n//2

else:

n=n*3 + 1

print('Please type a number')

m=int(input())

while m != 1:

m=collatz(m)

print(m)

总是提示我

Traceback (most recent call last):

File "D:/Python/Collatz sequence.py", line 10, in <module>

m=collatz(m)

File "D:/Python/Collatz sequence.py", line 3, in collatz

if n % 2 == 0:

TypeError: unsupported operand type(s) for %: 'NoneType' and 'int'

用户4501717用户4501717提问于
YingJoy_腾讯云+校园合伙人回答于
推荐

这段代码是有问题的

collatz方法并没有返回值,所以`m = collatz(m)`这一句明显是不正确的

TypeError: unsupported operand type(s) for %: 'NoneType' and 'int'

这个错误是正式因为你`collatz(m)`没有返回值,所以m的值为None所以不能转换为`int`

下面是我的代码:

# -*- coding: utf-8 -*-


def collatz(n):
    """Collatz 序列(考拉咨猜想)"""
    if n % 2 == 0:
        n = n // 2
    else:
        n = n * 3 + 1
    return n


if __name__ == '__main__':
    m = int(input('Please type a number'))

    while m != 1:
        m = collatz(m)
        print(m)

回答过的其他问题

云通信IM 可以发送语音消息吗?

YingJoy_腾讯云+校园合伙人
推荐
可以的哦,在云通信IM的文档中有写 消息类型(文本,图片,语音,表情等自定义消息): 文本:最大 1~2k 字节(支持透传特殊字符); 图片:原图/缩略图/大图(支持格式:png/gif/jpeg/jpg/webp); 语音:异步语音消息(语音支持暂无上限); 表情等自定义消息...... 展开详请

你好,我购买了云服务器(linux系统),怎么在云上安装我所需要的数据分析软件?

YingJoy_腾讯云+校园合伙人

使用ssh登陆到你的服务器(在服务器列表右边点击登陆,会有具体的登陆方法),然后在安装你的数据分析软件即可

百度云买的域名还在 想用在腾讯云的云直播上 求大神帮忙?

YingJoy_腾讯云+校园合伙人

百度域名那边解析填写腾讯云服务器的ip

我买了不知道怎么登陆?

YingJoy_腾讯云+校园合伙人

在控制台页面里选择你购买的产品,右边会有登录说明的哦

我们是一家日本公司,请问如何接入贵司的全球短信服务?

YingJoy_腾讯云+校园合伙人

短信服务是不需要备案的

你可以参考文档:https://cloud.tencent.com/document/product/382

域名注册完成后退出了,还没有实名认证,怎么再进入实名认证?

YingJoy_腾讯云+校园合伙人

登陆控制台后,选择云产品-> 域名管理即可

关于作者

YingJoy_

腾讯云 校园合伙人

所属标签

扫码关注云+社区

领取腾讯云代金券