Python 3.x ValueError:以10为基数的int()的文本无效:';x';
当字符串上的最后一个索引有“x”或“x”(表示为10)时,如果我有类似“1x”的东西,这意味着11(1+10) 我得到一个ValueError:以10为基数的int()的文本无效:“x” 输出应该是[0,1,4,5,11,13,22,27,36,46] 当字符串不包含“X”值时,它可以正常工作Python 3.x ValueError:以10为基数的int()的文本无效:';x';,python-3.x,Python 3.x,当字符串上的最后一个索引有“x”或“x”(表示为10)时,如果我有类似“1x”的东西,这意味着11(1+10) 我得到一个ValueError:以10为基数的int()的文本无效:“x” 输出应该是[0,1,4,5,11,13,22,27,36,46] 当字符串不包含“X”值时,它可以正常工作 def main(): s1 = "0131629592" partial_sums(s1) def partial_sums(s1): lst1 =[] sum =
def main():
s1 = "0131629592"
partial_sums(s1)
def partial_sums(s1):
lst1 =[]
sum = 0
for i in range(len(s1)):
sum = sum + int(s1[i])
lst1.append(sum)
print(lst1)
main()
如何修复它?此语句:
if (i == len(s1) -1) and (s1[i] == "x" or "X"):
sum = sum + int(s1[i]) + 10
仍然在s1[i]
上调用int
,即使s1[i]
是“x”
。您只需要sum+=10
但是,请注意,或
与您使用它的方式不同。引用文档,“表达式x或y
首先计算x;如果x为真,则返回其值;否则,计算y并返回结果值。“IOW,“a”==“b”或“c”
返回“c”
,而不是False,“c”
计算为真
另外,由于
sum
是一个非常有用的内置变量,因此使用您自己的同名变量对其进行阴影处理可能不是一个好主意<代码>总计经常被使用。我可以这样做吗?如果(i==len(s1)-1)和((s1[i]==“x”)或(s1[i]==“x”))或者有更好的方法吗?@user1804925:应该可以。你也可以做s1[i].lower()='x'
或s1[i]在('x','x')
(我可能自己做第一个。)
if (i == len(s1) -1) and (s1[i] == "x" or "X"):
sum = sum + int(s1[i]) + 10