17讲第3题 显示索引超出范围,怎么改呢
#编写一个将十进制转换为二进制的函数,要求采用“除2取余”的方式,#结果与调用bin()一样返回字符串形式。
def change(num):
liebiao=[ ]
i=0
shang=0
while shang==1:
liebiao=num%2 #取余
shang=num//2 #取商
num=shang
i=i+1
liebiao=1 #因为循环当shang=1时就结束了,而商为1时,也就是二进制的最高位是1
return(liebiao)
number=int(input('enter a numner:'))
result=change(number)
print(str(result))
错误太多了。
1、shang的初始值不应该是0,应该是num,然后每次循环时减少一位
2、while循环的条件怎么可能是shang==1,这样的话如何进入循环?
3、列表最开始为空,根本没有元素,怎么可能使用赋值语句,应该使用insert插入语句
4、直接在循环中将每一位都插入到列表中,何必在循环结束之后再写一句呢。。。
def change(num):
liebiao=[ ]
i=0
shang=num #这里shang的初始值怎么能是0呢。
while shang:#这里的循环条件为什么是shang==1?那样怎么进入循环?
liebiao.insert(0,num%2) #取余,这里一个是列表的插入操作而非赋值,因为刚开始列表为空
shang=num//2 #取商
num=shang
i=i+1
#liebiao=1 #因为循环当shang=1时就结束了,而商为1时,也就是二进制的最高位是1
return(liebiao)
number=int(input('enter a numner:'))
result=change(number)
print(str(result))
def change(num):
liebiao = list()# 保存二进制结果
shang = num
while shang:
liebiao.append(num % 2)# 将余数添加到列表
shang = num // 2# 取商
num = shang
return liebiao
number = int(input('enter a number:'))
result = change(number)
print(result[::-1]) # 将列表中保存的二进制结果反向输出
新手,代码仅供参考 sunrise085 发表于 2020-3-18 23:56
错误太多了。
1、shang的初始值不应该是0,应该是num,然后每次循环时减少一位
2、while循环的条件怎么可 ...
请问一下,这里while shang怎么理解 km82805046 发表于 2020-3-19 01:13
新手,代码仅供参考
好的,谢谢 猪猪虾 发表于 2020-3-19 12:09
请问一下,这里while shang怎么理解
while shang 是循环判断条件,用于判断整数是否为0时,当为0时 结束循环;而整个循环的功能是将整数进行除2取余数,将余数存储到列表中, shang = num // 2 输入的整数 整除2以后 得到新的的整数,作为循环判断条件,直到shang 为0 时,结束循环 猪猪虾 发表于 2020-3-19 12:09
请问一下,这里while shang怎么理解
while shang就是 while shang!=0 sunrise085 发表于 2020-3-19 12:55
while shang就是 while shang!=0
好的 km82805046 发表于 2020-3-19 12:54
while shang 是循环判断条件,用于判断整数是否为0时,当为0时 结束循环;而整个循环的功能是将整数进行 ...
感谢
页:
[1]