首页 > 解决方案 > 我正在尝试 WAP 将拒绝转换为二进制而不使用列表

问题描述

我已经看过几个程序。只是想知道这个逻辑有什么问题。它不断返回'str'对象不支持项目分配。我查了一下,但仍然找不到发生这种情况的原因。我只是一个新手,所以如果我只是想太多,请提前道歉。

x = dec
a = 5
n = 1
remainder = str()
binary = str()
while a != 1:
    a = x // 2
    b = x % 2
    x = a
    z = str(b)
    remainder = str(remainder + z)
if a == 1:
    b = 1
    z = str(b)
    remainder = str(remainder + z)
print(remainder)
asd = len(remainder)
for y in range(1, asd + 1):
    binary[y:y + 1] = remainder[-y:-y - 1]
print("It's binary form is ", binary)

标签: python

解决方案


问题在这里:

for y in range(1, asd + 1):
    binary[y:y + 1] = remainder[-y:-y - 1]
    # ^^^^^^^^^^^^^ error

你期望这会做什么?Python 字符串是不可变的:您不能分配给字符串切片。您只能使用该值(例如,赋值的右侧),或替换变量的整个值。

我怀疑您正在尝试反转字符串。像这样做:

rev = remainder[::-1]   # Whole string, but in reverse order

推荐阅读