【发布时间】:2019-03-03 12:27:52
【问题描述】:
def convBin():
cont = []
rest = []
dev = []
decimal = []
print("Ingrese el valor a convertir: ")
valor = ast.literal_eval(input())
if isinstance(valor, int):
while valor > 0:
z = valor // 2
resto = valor%2
valor = valor // 2
cont.append(z)
rest.append(resto)
cont.reverse()
rest.reverse()
dev.append(cont[0])
x = 0
while x <= (len(rest) - 1):
dev.append(rest[x])
x += 1
print(" ")
print("Lista de devoluciones: ")
print(dev)
print("")
elif isinstance(valor, float):
a = valor // 1
b = valor % 1
while a > 0:
z = a // 2
resto = a%2
a = a // 2
cont.append(z)
rest.append(resto)
cont.reverse()
rest.pop()
dev.append(cont[1])
for i in rest:
dev.append(rest[i])
print("Inserte el número de error minimo")
num = input()
while num > 0:
dec = b * 1
dec2 = dec//1
dec %= 1
decimal.append(dec2)
print("Parte entera: ")
print(dev)
print("Parte decimal:")
print(num)
else:
print("Ha aparecido un error")
它向我显示了一个错误,我无法将浮点数附加到列表中。
在询问您一个数字后,它会控制它是哪种类型的数字。当它是一个int时,它没有任何问题。但是当它是一个浮点数时,它表示它不能将一个浮点数添加到一个列表中,它保存了之前进行的操作的数量。
有人可以向我解释为什么我不能将浮点数附加到列表中,或者我该如何解决这个问题?
Traceback(最近一次调用最后一次):文件“Converter.py”,第 169 行,在 转换宾(); convBin 中的文件“Converter.py”,第 53 行 dev.append(rest[i]) TypeError: 列表索引必须是整数或 切片,不浮动
谢谢。
【问题讨论】:
-
你的意见是什么?
-
valor = ast.literal_eval(input())
-
输入了什么?
18?18.?18.89? -
你想用这个循环来完成什么?
for i in rest: dev.append(rest[i])您是否尝试将rest中的每个项目附加到dev的末尾?rest包含您的resto计算结果,当valor是浮点数时将是浮点数。some_float % 2是一个浮点数。 -
在输入中你可以输入你想要的任何东西,如果它是 int 代码将执行第一个 if,但如果它是 float 将执行另一件事。