leo-liu 发表于 2020-10-27 00:11:31

python入门问题

十进制转换二进制:

def deci(num):
    num = str(num)
    get = tuple(num)
    reversed(get)
    answer = 0
    for i in range(len(get)):
      n = int(get)
      answer = n*(2**i) + answer
    return answer

print(deci(100))

为什么结果是1?

wp231957 发表于 2020-10-27 06:52:35

在进入循环之前打印一下get的值,看看是否是期望值

冬雪雪冬 发表于 2020-10-27 08:08:16

这步reversed(get)没有起作用,反转后没有赋值给一个变量。
def deci(num):
    num = str(num)
    get = list(num)
    get.reverse()
    answer = 0
    for i in range(len(get)):
      n = int(get)
      answer = n*(2**i) + answer
    return answer

print(deci(100))

一只胖麻圆 发表于 2020-10-27 08:18:27

建议你Debug一下,就会发现n在第一次时为1,后面的两次都为0。
页: [1]
查看完整版本: python入门问题