任务是找到整数中的奇数个数.
count_odd_digits(n):
Run Code Online (Sandbox Code Playgroud)
给定一个非负整数,计算它的奇数位数.
例:
count_odd_digits(123450) ? 3 #digits 1,3, and 5 are odd
Run Code Online (Sandbox Code Playgroud)
我到目前为止:
def count_odd_digits(n):
ans = 0
for i in str(n):
if int(n) %2 == 1:
ans += 1
elif n[i]==0:
return None
Run Code Online (Sandbox Code Playgroud)
但我仍然没有通过测试,我的代码出了什么问题?
你有几个问题:
elif n[i] == 0: return None完全没用.你永远不想回来None; 你只想继续.由于您所做的一切都在继续,因此可以将其删除.
if int(n) % 2 == 1正在测试错误的东西.你想检查int(i),而不是int(n).
将代码更改为:
def count_odd_digits(n):
ans = 0
for i in str(n):
if int(i) % 2:
ans += 1
return ans
Run Code Online (Sandbox Code Playgroud)
使用生成器表达式会更容易:
def count_odd_digits(n):
return sum(int(i) % 2 for i in str(n))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |