-4

我正在编写一个小程序来将字符串转换为整数,然后在字符串列表中转换为二进制。这就是我所拥有的

x=0
while x < len(list):
    list[x]=bin(eval(list[x])
    if(list[x].startswith("0b")):
        list[x]=list[x].replace("0b","")

我在 if 语句的冒号上收到语法错误,我不知道为什么。任何帮助,将不胜感激。

4

1 回答 1

7

您真正的问题是您在bin()通话结束时缺少括号。

x = 0
while x < len(list):
    list[x] = bin(eval(list[x]))
    if list[x].startswith("0b"):
        list[x] = list[x].replace("0b","")

您可以删除if行上的括号;如果测试套件,python 不使用括号。

最好不要为变量使用内置类型名称,因此变量list名称不好。如果你想去掉字符串开头的字符,你可以使用索引:

list[x] = list[x][2:]

大概您的代码尚未完成,或者由于错误您尚未发现这一点,但您的循环将永远不会结束,因为您没有递增x.

最后但同样重要的是:不要使用eval; 这是一个等待发生的安全漏洞。

于 2012-05-25T15:10:47.163 回答