2012-05-25 33 views
-3

我正在写一个小程序来将字符串转换为整数,然后在字符串列表中转换为二进制。这是我Python获取语法错误如果语句

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

我的if语句的结肠得到一个语法错误,我不知道为什么。任何帮助,将不胜感激。

回答

7

你真正的问题是你在bin()调用结束时错过了一个parens。

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

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

最好不要使用变量的内置类型名称,所以list是变量的错误名称。如果你想在一个字符串的开头脱光字符,你可以使用索引:

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

想必你的代码尚未完成,或者你没有发现这个尚未到期的错误,但你的循环永远不会结束,因为你不会增加x

最后但并非最不重要的:do not use eval;这是一个等待发生的安全漏洞。

+6

并且不要使用名为“list”的变量。 – Scharron

+3

这个答案的第一个陈述是一个文体评论,而不是实际的问题;但它是正确的。 :) –

+0

真正的问题是在'bin'调用中缺少')'。休息是好的和有价值的建议,所以也许这可能是更好的答案的第一行。 – Levon