Почему моя логика кода Python3 не работает?Python

Программы на Python
Ответить
Anonymous
 Почему моя логика кода Python3 не работает?

Сообщение Anonymous »

Я пытаюсь создать программу на Python, которая берет список цифр (например, [9, 9, 9]) и добавляет к нему единицу, рассматривая список как целое число. Например:
  • Вход: [9, 9, 9]
  • Ожидаемый результат: [1, 0, 0] , 0]
Программа должна рассматривать [9, 9, 9] как 999, прибавлять к нему 1, чтобы получить 1000, и возвращать [1, 0] , 0, 0]. Однако вместо этого мой код продолжает возвращать [9, 10, 0].
Вот мой код:

Код: Выделить всё

def plus_one(digits):
if digits == [9]:
digits = [1, 0]
return digits
else:
if digits[-1] == 9:
digits[-1] = 0
digits[-2] = digits[-2] + 1
while True:
if digits[0] > 9:
digits[0] = 1
digits.append(0)
return digits
else:
for digit in digits:
if digit > 9:
digits[digits.index(digit) - 1] = digits[digits.index(digit) - 1] + 1
digits[digits.index(digit)] = 0

else:
return digits

print(plus_one([9, 9, 9]))
Мне хотелось бы понять, почему эта логика не работает, особенно для ввода [9, 9, 9], прежде чем исследовать пути улучшения кода.
Мой код возвращает [9, 10, 0] вместо ожидаемого [1, 0, 0, 0]. Однако он отлично работает для ввода [9, 9], где правильно возвращает [1, 0, 0].

Подробнее здесь: https://stackoverflow.com/questions/793 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»