Python 剥离'$'-从销售清单上签字
为什么我不能在第一种代码方法中去掉“$”而在第二种方法中却能去掉 方法1Python 剥离'$'-从销售清单上签字,python,list,strip,Python,List,Strip,为什么我不能在第一种代码方法中去掉“$”而在第二种方法中却能去掉 方法1 sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98', '$17.41', '$28.59'] for element in sales: element.strip('$') print(element) 方法2 sales = ['$1.21', '$7.29', '$12.52', '$5.13
sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98', '$17.41', '$28.59']
for element in sales:
element.strip('$')
print(element)
方法2
sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98', '$17.41', '$28.59']
for element in sales:
print(element.strip('$'))
如果要更改原始列表,需要在for循环中指定变量并使用索引:
sales=['1.21美元','7.29美元','12.52美元','5.13美元','20.39美元','30.82美元','1.85美元','17.98美元','17.41美元','28.59美元']
对于范围内的x(len(销售)):
销售额[x]=销售额[x]。条带(“$”)
打印(销售[x])
您似乎希望将销售视为一个数字变量
sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98', '$17.41', '$28.59']
sales = [float(element.strip('$')) for element in sales]
然后你可以把它打印出来或者求和
print("total sales: {t:.2f}".format(t=sum(sales)))
方法不会修改给定的字符串,而是返回正式文档中指定的结果
返回包含前导字符和尾随字符的字符串副本
删除
由于element.strip(“$”)
返回结果,而不是修改element
此代码不起任何作用。若要将其转换为美分(切勿使用浮动货币,因为浮动货币不精确,您可以执行以下操作:
sales_in_cents = [int(element.strip('$').replace('.','')) for element in sales]
要以美元显示总额
print(f'Total sales : {sum(sales_in_cents)/100:0.2f}'
用美分进行所有计算(包括总和),并转换为$(仅在需要时除以100)。在第一个计算中,您忽略
strip
的返回值。因为您没有存储元素.strip(“$”)的返回值
anywhere。在第二种情况下,您只看到条带的结果,但条带未应用于列表中的元素sales
。如果您希望通过删除$
符号来修改列表sales,则必须使用修改后的元素创建一个新列表。sales=[i.lstrip('$')for i In sales]
,销售[:]=(i.lstrip(“$”)表示销售中的i)
如果格式正确,第二种方法应该有效。使用浮点数进行货币计算充满了危险。-例如,在大多数语言中,0.1+0.1+0.1!=0.3
由于浮点数不精确。最好尽快将它们转换为美分。sales=[element.strip('$)for element in sales]python可能会在总和的末尾加上.000000123,所以格式化输出会很好;)或者使用Decimal
@TonySuffolk66,注意事项-更新我的答案以考虑浮点precision@OlvinRoght这将发生,因为在Python和大多数其他语言中,浮点是imprecise@UriGoren不是真的-即使是fsum也无法回避浮点数不能准确存储0.1、0.2、0.3等的事实,并且仍然会得到舍入e错误