Проблема в вашем коде связана с тем, что вы используете оператор print в одной части условия и оператор return в другой части. Когда условие if не выполняется, функция возвращает None по умолчанию. Для исправления кода, вы можете использовать return в обоих случаях. Вот исправленный код:
python
Copy code
def number_to_words(n):
di = {
0: 'ноль',
1: 'один',
2: 'два',
3: 'три',
4: 'четыре',
5: 'пять',
6: 'шесть',
7: 'семь',
8: 'восемь',
9: 'девять',
10: 'десять',
11: 'одиннадцать',
12: 'двенадцать',
13: 'тринадцать',
14: 'четырнадцать',
15: 'пятнадцать',
16: 'шестнадцать',
17: 'семнадцать',
18: 'восемнадцать',
19: 'девятнадцать',
20: 'двадцать',
30: 'тридцать',
40: 'сорок',
50: 'пятьдесят',
60: 'шестьдесят',
70: 'семьдесят',
80: 'восемьдесят',
90: 'девяносто'
}
if n > 20 and n % 10 != 0:
p = n // 10 * 10
v = n % 10
return di[p] + ' ' + di[v]
else:
return di[n]
# Пример использования
print(number_to_words(21)) # Вывод: двадцать один
Как-то так , пробуй
di = {
0: 'ноль',
1: 'один',
2: 'два',
3: 'три',
4: 'четыре',
5: 'пять',
6: 'шесть',
7: 'семь',
8: 'восемь',
9: 'девять',
10: 'десять',
11: 'одиннадцать',
12: 'двенадцать',
13: 'тринадцать',
14: 'четырнадцать',
15: 'пятнадцать',
16: 'шестнадцать',
17: 'семнадцать',
18: 'восемнадцать',
19: 'девятнадцать',
20: 'двадцать',
30: 'тридцать',
40: 'сорок',
50: 'пятьдесят',
60: 'шестьдесят',
70: 'семьдесят',
80: 'восемьдесят',
90: 'девяносто'
}
if n > 20 and n % 10 != 0:
p = n // 10 * 10
v = n % 10
print(di[p] + ' ' + di[v])
else:
return di[n]
Ввод Вывод
print(number_to_words(21)) двадцать один
А он выводит
двадцать один
None