当字符串的最后一个索引有“x”或“X”(它表示为10)时,如果我有类似“1x”的东西,则表示11(1 + 10)
def main():
s1 = "013162959x"
partial_sums(s1)
def partial_sums(s1):
lst =[]
sum = 0
for i in range(len(s1)):
if (i == len(s1) -1) and (s1[i] == "x" or "X"):
sum = sum + int(s1[i]) + 10
else:
sum = sum + int(s1[i])
lst.append(sum)
print(lst)
main()
我得到了一个ValueError:基数为10的int()的无效文字:'x'
输出应为[0,1,4,5,11,13,22,27,36,46]
当字符串包含No“X”值时,它可以正常工作。
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()
我该如何解决?
答案 0 :(得分:1)
本声明:
if (i == len(s1) -1) and (s1[i] == "x" or "X"):
sum = sum + int(s1[i]) + 10
即使int
为s1[i]
,仍会在s1[i]
上调用"x"
。你只想要sum += 10
。
但是,请注意or
无法按照您使用它的方式运行。要引用文档,“表达式x or y
首先评估 x ;如果 x 为true,则返回其值;否则, y 并返回结果值。“ IOW,"a" == "b" or "c"
返回"c"
,不返回False,"c"
计算为True。
此外,由于sum
是一个非常有用的内置函数,因此使用您自己的同名变量来隐藏它可能是一个坏主意。通常会使用total
。