Python3 中Collatz sequence的问题?

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

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)

扫码关注云+社区

领取腾讯云代金券