And*_*yM3 5 python string integer
我的任务是:
"写一个函数sumOfDigits,它有一个string类型的参数.该函数应该返回字符串中数字的总和.不要将多个数字字符串视为一个数字 - "2014"应该被视为4个不同的数字,即2,0 ,1,4.字符串"今天的日期是2014年1月9日",函数应该返回17.你可以假设参数是一个字符串.不需要做任何类型验证."
这是我到目前为止所做的(适当的缩进):
def sumOfDigits (string1: str):
summation=0
for i in string1:
summation=summation + int (i)
return (summation)
print (sumOfDigits ('543tf'))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"Traceback (most recent call last):
File "C:\Users\Andrew\Desktop\lab3.py", line 45, in <module>
print (sumOfDigits ('543tf'))
File "C:\Users\Andrew\Desktop\lab3.py", line 42, in sumOfDigits
summation=summation + int (i)
ValueError: invalid literal for int() with base 10: 't'"
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?这样做是因为添加int和string/char有什么困难吗?
问题是除非是数字int(x)否则就会失败。x解决方案是仅对数字求和。为此,python 有 string 方法isdigit。例如:
>>> s = \'543tf\'\n>>> sum(int(x) for x in s if x.isdigit())\n12\nRun Code Online (Sandbox Code Playgroud)\n\n和:
\n\n>>> s = "Today\xe2\x80\x99s date is 09/01/2014"\n>>> sum(int(x) for x in s if x.isdigit())\n17\nRun Code Online (Sandbox Code Playgroud)\n\nUnicode 添加了大量字符,Python 将其中一些字符分类为数字,即使int不接受它们。上标 3: 就是这样的一个例子\xc2\xb3。为了解决这个问题,python3 引入了它isdecimal,并使其比isdigit. 因此,在 python3 中,可以使用:
>>> s = "Today\xe2\x80\x99s date is 09/01/2014 See footnote\xc2\xb3"\n>>> sum(int(x) for x in s if x.isdecimal())\n17\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |