Удвоение каждой второй цифры в питоне

1

Я хотел бы удвоить значение каждой второй цифры, а затем сложить цифры в десятках. Наконец, сложив все цифры, например: 123456789 → 1 4 3 8 5 12 7 16 9 → 1 4 3 8 5 3 7 7 9 → 47

редактировать: пользователь будет вводить любое число, и функция будет по-прежнему работать, например: 5153 → 5 2 5 6 → 18

-SORRY первый пост, к которому я все еще привыкаю this- Так что я бы хотел, чтобы моя функция
1. Поменять местами введенное число
2. Удвойте значение второй цифры
3. Суммируйте все цифры вместе
4. Проверьте, делится ли оно на 7

Вот мой код до сих пор

мое тестирование
контрольная сумма def (num):

#print(rev)
odd_digit = ""
even_digit = ""
even_sum = 0
odd_sum = 0
total_sum = 0

if num < 10 and num != 7:
    return False
else:
    return True

rev = (num[::-1])
for i in range(len(rev)):
    if i % 2 == 0:
        odd_digit += rev[i]
    else:
        even_digit += rev[i]

#print(even_digit)
even_digit = int(even_digit)
while even_digit > 0:
    even_digit, even_sum = even_digit//10,even_sum+(even_digit%10)
#print(even_sum)
even_sum_2 = even_sum * 2
#print(even_sum_2)

odd_digit = int(odd_digit)
while odd_digit > 0:
    odd_digit, odd_sum = odd_digit//10,odd_sum+(odd_digit%10)
#print(odd_sum)

total_sum = even_sum_2 + odd_sum
#print(total_sum)

if total_sum % 7 == 0:
    return True
else:
    return False

печать (контрольная сумма (12345678901))

  • 6
    Пожалуйста, предоставьте код Python, который вы уже пробовали
  • 1
    В соответствии с формулировкой вопроса, шаг 1: удвойте вторую цифру, а затем введите 123456789, это должно быть 1 4 3 8 5 12 7 16 9. Но вы упомянули 14 вместо 16.
Теги:
python-3.x

2 ответа

2

Попробуйте использовать эту sum с map и списком:

>>> sum(map(int,''.join([str(int(v)*2) if i%2 else v for i,v in enumerate(s)])))
47

Или используйте:

>>> sum([sum(map(int,str(int(v)*2))) if i%2 else int(v) for i,v in enumerate(s)])
47
0
sum([sum(map(int, str(i * 2))) if i % 2 == 0 else i for i in range(1, 10)])
  • 0
    i % 2 == 0 ? это должно быть i % 2
  • 0
    i % 2 возвращает 0 когда i чётный. 0 == 0 возвращает True . Поскольку диапазон начинается с нечетного числа, это удовлетворяет требованию «удваивать значение каждой второй цифры».
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню