В чем моя проблема? Я хочу получить обратный номер действия - пример: 123 ==> 321Как цифра анаграммы в python?
def loop(a):
i=0
while(a>=1)
print(a%10)
s=s/10
i=i+1
В чем моя проблема? Я хочу получить обратный номер действия - пример: 123 ==> 321Как цифра анаграммы в python?
def loop(a):
i=0
while(a>=1)
print(a%10)
s=s/10
i=i+1
У вашего решения есть несколько проблем, кроме отступа и отсутствующего двоеточия.
Прежде всего, вы используете print
, который автоматически добавляет разрыв строки, так что это может быть не то, что вы хотите, чтобы результат выглядел. Вы можете сохранить результат в строке, к которой вы добавляете последний символ, и затем распечатывать его один раз в конце.
Кроме того, вы используете переменную s
, которая раньше не использовалась. В этом случае это должно быть a
, так как вы хотите удалить последнюю цифру с помощью целочисленного деления на 10. Обратите внимание, что в этом случае это будет работать только в Python 2, так как Python 3 будет использовать там поплавковое деление (например, 15/10 == 1.5
). Вы можете предотвратить это путем явного использования целочисленного деления (это также сделает ваше намерение более понятным): s = s // 10
(обратите внимание на две черты).
И, наконец, вы увеличиваете переменную i
, не используя ее, поэтому можете просто избавиться от нее.
В конце концов, это может выглядеть следующим образом:
def reverse (a):
rev = ''
while a > 1:
rev += str(a % 10)
a = a // 10
Сокращенный решение, используя тот факт, что вы можете просто реверс строки:
>>> num = 123
>>> rev = int(str(num)[::-1])
>>> rev
321
Если оставить в стороне int()
, вы можете даже сохранить конечные/ведущие нули и получить строку вместо:
>>> num =
>>> str(num)[::-1]
'0123'
Важно правильно отступать. (Не смешивать вкладки и пробелы.)
def loop(a):
i = 0
while a >= 1:
print(a % 10)
a = a/10
i = i + 1
Вы также отсутствует двоеточие после состояния while
.
Несколько вопросов:
Ваш отступы не совпадает. PEP 8 предлагает 4 пробела для отступов.
Вы пропустили двоеточие после while(a>=1)
Хотя это не является проблемой, вам не нужны круглые скобки в то время цикла, это может быть просто while a >= 1
s = s/10
мощь не возвращать то, что вы ожидаете. Например, 12/10 == 1
(если вы не имеете дело с поплавками здесь).
Все это может быть упрощена с помощью нарезки:
>>> print int(str(123)[::-1])
321
На самом деле 'ы/10' (целое деление на Python 2, или' ы // 10' в Python 3) будет то, что хочет OP, за исключением того, что это должно быть 'a', а не' s'. – poke