#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) Большое спасибо)
Комментариев нет:
Отправить комментарий