nettkd 发表于 2021-12-21 09:37:21

定义了一个求余函数

def Convert(x):
    list = []
   
    while z:#z不为0
      y = x % 2 #除以2得到余数
      z = x // 2 #除以2的商数
      x = z#x取上一步的商数
      list.append(y)


请问各位大神,我这个问题出在哪里啊

jackz007 发表于 2021-12-21 09:45:21

本帖最后由 jackz007 于 2021-12-21 09:50 编辑

      【问题】:1、while z:中的循环变量 z 未被初始化
                        2、函数没有返回值
                        3、保留字 list 作为普通变量名称使用,失去意义和功能。
def Convert(x):
    d = []
    while x:
      d . append(x % 2)
      x //= 2
    return d

nettkd 发表于 2021-12-21 11:03:04

jackz007 发表于 2021-12-21 09:45
【问题】:1、while z:中的循环变量 z 未被初始化
                        2、函数没有返回值
...

{:5_106:}谢谢了!是我没有表达清楚,其实我是在十进制转换二进制 ,所以用到了循环,一直到0为止,所以我会让x不断取上一步的商,但是不通过,不过你还是帮到我了,谢谢!

jackz007 发表于 2021-12-21 11:24:46

nettkd 发表于 2021-12-21 11:03
谢谢了!是我没有表达清楚,其实我是在十进制转换二进制 ,所以用到了循环,一直到0为止,所以 ...

      10 进制转二进制,早说嘛
def Convert(x):
    d = []
    while x:
      d . insert(0 , (x % 2))
      x //= 2
    return d
print(Convert(256))

nettkd 发表于 2021-12-21 11:30:00

jackz007 发表于 2021-12-21 11:24
10 进制转二进制,早说嘛

我自己解决了,谢谢哈

nettkd 发表于 2021-12-21 11:30:39

jackz007 发表于 2021-12-21 11:24
10 进制转二进制,早说嘛

我去,你这种方法比 我好太多了

jackz007 发表于 2021-12-21 11:31:54

nettkd 发表于 2021-12-21 11:30
我去,你这种方法比 我好太多了

      还可以递归
def Convert(x):
    return Convert(x // 2) + if x else []
print(Convert(256))
页: [1]
查看完整版本: 定义了一个求余函数