#python #python_3x #for
Накопал в интернете эту ссылку: https://clck.ru/JccbR Здесь написано на C++, попытался перевести на Питон, в соразмерности со своими знаниями, получил: def test(i): k = i while(k): d = k % 10 k /= 10 if (d and i % d): return False return True n = int(input()) for i in range(1, n + 1): if (test(i)): print(i) Программа ничего не выводит, подскажите пожалуйста где я не прав?
Ответы
Ответ 1
В Python 3.x: k /= 10 Вернет число с плавающей точкой. Воспользуйтесь целочисленным делением: k //= 10 def test(i): k = i while(k): d = k % 10 k //= 10 if (d == 0 or i % d): return False return True проверка: In [174]: for i in range(1, int(input()) + 1): ...: if (test(i)): ...: print(i) ...: 42 1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36Ответ 2
Проблема решена, как и сказал @MaxU нужно было заменить k/=10 на k//=10, а также сделать проверку на круглое число: def test(i): k = i while(k): d = k % 10 k //= 10 if (d and i % d): return False return True n = int(input()) for i in range(1, n + 1): if (test(i) and i % 10 != 0): print(i) Большое спасибо)
Комментариев нет:
Отправить комментарий