2013-09-26 3 views

ответ

2

У вашего решения есть несколько проблем, кроме отступа и отсутствующего двоеточия.

Прежде всего, вы используете 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' 
0

Важно правильно отступать. (Не смешивать вкладки и пробелы.)

def loop(a): 
    i = 0 
    while a >= 1: 
     print(a % 10) 
     a = a/10 
     i = i + 1 

Вы также отсутствует двоеточие после состояния while.

1

Несколько вопросов:

  • Ваш отступы не совпадает. PEP 8 предлагает 4 пробела для отступов.

  • Вы пропустили двоеточие после while(a>=1)

  • Хотя это не является проблемой, вам не нужны круглые скобки в то время цикла, это может быть просто while a >= 1

  • s = s/10 мощь не возвращать то, что вы ожидаете. Например, 12/10 == 1 (если вы не имеете дело с поплавками здесь).


Все это может быть упрощена с помощью нарезки:

>>> print int(str(123)[::-1]) 
321 
+0

На самом деле 'ы/10' (целое деление на Python 2, или' ы // 10' в Python 3) будет то, что хочет OP, за исключением того, что это должно быть 'a', а не' s'. – poke

Смежные вопросы