帅气小哥 发表于 2021-4-9 19:00:11

大佬求帮助

def temp(x):
    list = []
    while x != 0:
      t = x % 2
      x = int(x/2)
      list . append(t)
print(list)


#他报错 是出现<class 'list'>这个
程序目的是 编写一个将十进制转换为二进制的函数,要求采用“除2取余”(补脑链接)的方式,结果与调用 bin() 一样返回字符串形式

昨非 发表于 2021-4-9 19:08:48

列表命名要避开list
你这样会覆盖掉list方法,造成报错

qiuyouzhi 发表于 2021-4-9 19:34:37

1,变量命名最好不要用内置的关键字
2,函数定义不代表调用,你得调用
3,局部变量无法在外部访问

帅气小哥 发表于 2021-4-9 19:48:41

昨非 发表于 2021-4-9 19:08
列表命名要避开list
你这样会覆盖掉list方法,造成报错

def temp(x):
    guess = []
    while x:
      t = x % 2
      x = int(x/2)
      guess . append(t)

print(temp(200))

大佬 我给他换了之后可是我的结果出现了 这个None

昨非 发表于 2021-4-9 19:51:53

帅气小哥 发表于 2021-4-9 19:48
def temp(x):
    guess = []
    while x:


函数缺少返回值啊

昨非 发表于 2021-4-9 19:54:01

而且用列表的话会造成二进制0,1的顺序颠倒,可以考虑改成字符串
def Dec2Bin(dec):
    result = ''
    if dec:
      result = Dec2Bin(dec // 2) #每取余得到二进制的一位,递归的参数就地板除二,直到dec为0为止,说明各位已取完
      return result + str(dec % 2) #取余2得到的余数为二进制各位的倒序,依次以字符串的形式拼接在一起,相当于正序
    else:
      return result #返回正序二进制字符串
print(Dec2Bin(200))#打印出返回值

帅气小哥 发表于 2021-4-9 20:04:48

昨非 发表于 2021-4-9 19:51
函数缺少返回值啊

1. 函数缺少返回值?这个什么意思啊?
2. 直接把值先正序放到列表里 然后在把列表倒序 在打印这个列表不就好了吗
3. 那个 if函数的我也没看懂dec//2 前面为啥加上Dec2Bin

昨非 发表于 2021-4-9 22:08:34

帅气小哥 发表于 2021-4-9 20:04
1. 函数缺少返回值?这个什么意思啊?
2. 直接把值先正序放到列表里 然后在把列表倒序 在打印这个列表 ...

这是递归调用,后面会学到的

帅气小哥 发表于 2021-4-9 22:12:28

昨非 发表于 2021-4-9 22:08
这是递归调用,后面会学到的

感谢 大佬
页: [1]
查看完整版本: 大佬求帮助