нахождение числа 0 и 5 в целом числе с помощью функции - PullRequest
0 голосов
/ 10 июля 2020

Я учусь на сайте, который предоставил мне код, который должен найти количество цифр в строке, равное 0 или 5.

Вот код.

def num_zero_and_five_digits(n):
    count = 0
    while n:
        digit = n % 10
        if digit == 0 or digit == 5:
            count = count + 1
        n = n / 10
    print(count)

Я проследил его, и он должен работать, но когда я запускаю его, 5 работает, 50 работает, но 505 возвращает только 1 вместо 3.

Он должен принимать число, узнать, если по модулю числа равно 5 или 0 (следовательно, последнее di git равно 5 или 0, потому что, например, 505% 10 = 5), а затем увеличить счетчик на 1, если это так. Затем повторите l oop.

Я переместил счетчик, но не могу понять, что не так с кодом.

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Попробуйте использовать строку вместо целого числа, потому что 505 делится на 10 равно 50,5 (0 не может быть первым di git целого числа).

Попробуйте этот код:

def num_zero_and_five(n):
    count = 0
    string_number = str(n)
    for char in string_number:
        if char == '0' or char == '5':
            count += 1
    print(count)

0 голосов
/ 10 июля 2020

Из того, что я вижу, n - целое число, а не строка.

Теперь проблема в том, что когда вы делите 505 на 10 (n = n / 10), вы получаете 50,5 и 50,5% 10 равно 0,5, а не 0 и 5. Следующая итерация - та же проблема, с 5,05% 10 = 0,05.

Вы можете попробовать вычесть di git из n :

def num_zero_and_five_digits(n):
    count = 0
    while n:
        digit = n % 10
        if digit == 0 or digit == 5:
            count = count + 1
        n = n - digit
        n = n / 10
    print(count)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...