奇数位数蟒蛇

Jes*_*ica 2 python python-3.x

任务是找到整数中的奇数个数.

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)

但我仍然没有通过测试,我的代码出了什么问题?

zon*_*ndo 5

你有几个问题:

  • 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)