首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:在设置字符串格式期间,并非所有参数都已转换

TypeError:在设置字符串格式期间,并非所有参数都已转换
EN

Stack Overflow用户
提问于 2014-11-24 02:09:12
回答 1查看 1.2K关注 0票数 0

我有一个程序,它应该计算7位整数的偶数奇偶校验的汉明码,这是程序:

代码语言:javascript
复制
data=list(input("Enter a 7-bit binary integer:"))

if (data[0]+data[1]+data[3]+data[4]+data[6])%2 == 0:
    data.insert(8, "0")
else:
    data.insert(8, "1")

if (data[0]+data[2]+data[3]+data[5]+data[6])%2 == 0:
    data.insert(7, "0")
else:
    data.insert(7, "1")

if (data[1]+data[2]+data[3])%2 == 0:
    data.insert(6, "0")
else:
    data.insert(6, "1")

if (data[4]+data[5]+data[6])%2 == 0:
    data.insert(3, "0")
else:
    data.insert(3, "1")

print("Your 7-bit binary integer with Hamming Code parity bits:",data)

然而,当我运行这个程序时,我得到了这个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Python34\hamcode.py", line 3, in <module>
    if (data[0]+data[1]+data[3]+data[4]+data[6])%2 == 0:
TypeError: not all arguments converted during string formatting

我不确定这意味着什么以及如何修复它,任何回应都会非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2014-11-24 02:11:32

data的类型是一个包含字符串的列表,而不是一个整数列表:

代码语言:javascript
复制
>>> data=list(input("Enter a 7-bit binary integer:"))
Enter a 7-bit binary integer:123456
>>> data
['1', '2', '3', '4', '5', '6']

因此,您正在尝试连接字符串,但您并没有按预期对数字求和:

代码语言:javascript
复制
if (data[0]+data[1]+data[3]+data[4]+data[6])%2 == 0:

要修复它,您需要首先将所有字符串更改为数字:

代码语言:javascript
复制
data = [int(x) for x in data]

此时,这行代码将列表中的字符串重新添加到单个字符串中,并且您正在尝试对该字符串使用字符串格式(使用% 2,这是字符串格式的语法)。运算符%在应用于数字时是模运算符,但在应用于字符串时是字符串格式化运算符。

换句话说,你正在做:

代码语言:javascript
复制
'123456' % 2

这意味着Python正在尝试将该2插入到字符串123456中的适当位置(这是不可能的,因为没有为它指定位置)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27092438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档