Как сложить строки как числа?
На codewars встретил такое задание:
Given the string representations of two integers, return the string representation of the sum of those integers.
Дело в том, что очень большие числа записываются в экспоненциальной форме, а нужно вывести в обычной в виде строки.
Есть популярное решение:
function sumStrings(a, b) < var res = '', c = 0; a = a.split(''); b = b.split(''); while (a.length || b.length || c) < c += ~~a.pop() + ~~b.pop(); res = c % 10 + res; c = c >9; > return res.replace(/^0+/, ''); >
Помогите понять что происходит в цикле..
- Вопрос задан более трёх лет назад
- 1520 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1
Александр @fireSparrow
Если переписать на человеческий язык, то получится примерно так:
Выполнять, пока в 'a' или 'b' ещё остались символы, или пока число 'c' не нулевое < Взять по одной цифре с конца из 'a' и 'b', сложить как числа и прибавить к 'c' Дописать к 'res' цифру, которая является остатком от деления 'c' на 10 // То есть это попросту цифра, на которую заканчивается число 'c' Записать в 'c' boolean - было ли оно на этом шаге больше 9 // Если было, то осталась необработанная цифра и нужно делать ещё итерацию >
Отдельно стоит добавить, что если в конце итерации ‘c’ была ‘true’, то в начале следующей итерации к этому значению будет добавлена сумма двух цифр.
При сложении true интерпретируется как 1.
Соответственно, ‘c’ между итерациями переносит единицу в следующий по старшинству разряд и служит вместо той точки, которую мы при ручном сложении в столбик ставим в таких случаях над цифрой.
Типы данных
Python — язык программирования со строгой типизацией. Но что это означает на деле?
Предположим, требуется вывести на экран результат какого-нибудь арифметического действия. Например, сумму двух чисел. Однако, просто выводить число на экран не очень весело и мы хотим добавить к числу какой-то текст, например, «результат равен „. С одной стороны, мы знаем, что оператор „+“ складывает два числа. С другой, что он может склеить две строки в одну. Но что, если нужно склеить строку и число?
result = 10 + 15text = "Результат равен " + resultprint(text)
Такая программа, разумеется, не заработает и выведет на экран следующую ошибку
TypeError: Can't convert int to str implicitly
Дословно эту ошибку можно перевести как «Невозможно неявно преобразовать целое в строку». То есть, Python не может склеить число со строкой по причине того, что это разные типы данных. Это и есть строгая типизация — для того, что бы работало корректно, данные нужно преобразовывать к одному типу.
Кроме строк и целых чисел, в Python есть еще много различных типов данных. Однако, для понимания сути нам достаточно строк и чисел. Чтобы перевести число в строку нужно использовать встроенную в Python функцию str. Такая программа заработает и выведет на экран именно то, что мы хотим
result = 10 + 15text = "Результат равен " + str(result)print(text)
А что, если мы захотим сложить числа, которые введет пользователь?
a = input('Введите первое число')b = input('Введите второе число')result = a + btext = "Результат равен " + str(result)print(text)
Бьюсь об заклад, вывод этой программы может показаться странным, но все сработало именно так, как надо! Если пользователь введет числа 1 и 2 программа выведет на экран следующий текст
Результат равен 12
Так произошло потому, что функция input вернула строки. То есть, хоть пользователь и ввел числа, они были возвращены строками. То же самое произошло бы, если бы мы в первой программе сделали так
result = "10" + "15"text = "Результат равен " + resultprint(text)
То есть, числа будут «склеены» как строки.
Чтобы все сработало так, как мы действительно хотим, введенные пользователем строки нужно преобразовать в числа. И в этом поможет встроенная функция int
a = input('Введите первое число')b = input('Введите второе число')result = int(a) + int(b)text = "Результат равен " + str(result)print(text)
Хотите выучить Python на практике?
Строки в Python и методы работы с ними
В одной из прошлых статей я разбирал строки в JavaScript. Теперь пришло время поговорить о строках в языке программирования Python.
Начнем с теории. Строка – это последовательность символов произвольной длины. Также строки являются объектами класса str, и если мы захотим получить не строку, а число, то можем использовать функцию приведения.
Склеивание и разделение строк
Самый простой способ склеить строки в Python – это сложить их с помощью знака «+». Рассмотрим на примере:
str = "a"+"b" print(str) # Выведет "ab"
Но такой способ не всегда будет нам подходить. Рассмотрим метод join():
str = ["a", "b", "c"] print("".join(str)) # Выведет "abc"
Перед .join() мы указываем разделитель строк, а в скобках сам их массив.
Для того чтобы разделить строки, используем обратный метод – split(). Тут в скобках указываем набор символов, по которым будет идти разделение, а перед методом не забываем указать имя строки, а после нее поставить точку. Рассмотрим на примере:
str = "a,b,c" print(str.split(",")) # Выведет ['a', 'b', 'c']
Существует и другой способ разделения строк, он называется срез. Срез str[x:y] позволит нам получить строку от символа x до y. При этом необязательно указывать оба параметра, ведь в таком случае срез произойдет от начала или до самого конца строки.
str = "Строки в Python и методы работы с ними" print(str[9:15]) # Выведет "Python"
С начала строки:
str = "Строки в Python и методы работы с ними" print(str[:15]) # Выведет "Строки в Python"
До самого конца:
str = "Строки в Python и методы работы с ними" print(str[18:]) # Выведет "методы работы с ними"
Также можно срезать каждый энный символ при помощи двойного двоеточия:
str = "123456789" print(str[::2]) # Выведет "13579"
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Форматирование строк в Python
Для подстановки в строку любой переменной, которая может являться результатом работы основной части кода, нам понадобятся f-строки. Они появились в Python 3.6, поэтому я рекомендую использовать только свежие версии этого языка программирования. Рассмотрим на примере работу с f-строками:
num = 2*10 num2 = 100 str = f"Первое число: . Второе число: " print(str) # Выведет "Первое число: 20. Второе число: 100"
Поиск в строках
Если нам нужно найти набор символов в начале или в конце данной строки, то на помощь приходят два быстрых метода.
Первый метод – startswith(). Он позволяет искать набор символов в начале строки. Рассмотрим на примере:
str = "Строки в Python и методы работы с ними" print(str.startswith("Строки")) #Выведет True
Второй метод – endswith(). Он позволяет искать набор символов в конце строки. Рассмотрим на примере:
str = ". я разбирал строки в JavaScript" print(str.endswith("JavaScript")) #Выведет True
А если нам нужно найти набор символов в произвольном месте строки, то используем метод find(). Рассмотрим на примере:
str = "Строки в Python и методы работы с ними" print(str.find("Python")) #Выведет 9
В данном случае скрипт нашел набор символов в строке и вывел индекс начала его вхождения в ней.
str = "Строки в Python и методы работы с ними" print(str.find("JavaScript")) #Выведет -1
А в этом случае скрипт не нашел набор символов в строке и вывел «-1».
Замена в строках
Для замены одного набора символов на другой в строке используют метод replace(). Рассмотрим данный метод на примере:
str = "Строки в Python и методы работы с ними" print(str.replace("Python", "JavaScript")) #Выведет "JavaScript"
Вывод каждого символа в строке
Если нам нужно получить и обработать каждый символ в строке отдельно, то мы можем использовать цикл for. Рассмотрим на примере:
str = "123" for i in str: print(i) #Выведет "1" "2" "3"
Узнаем длину строки
Для того чтобы получить длину строки, используем метод len():
str = "123" print(len(str)) # Выведет 3
Преобразование строки в число
Если мы имеем строку, состоящую из набора цифр, то мы смело можем преобразовать ее в число, используя функцию приведения int(). Рассмотрим на примере:
str = "123" print(int(str)) # Выведет 123
Изменение регистра строк в Python
Для того чтобы все буквы в строке были заглавными, используем метод upper():
str = "Строки в Python и методы работы с ними" print(str.upper()) # Выведет "СТРОКИ В PYTHON И МЕТОДЫ РАБОТЫ С НИМИ"
И метод lower() для строчных букв:
str = "СТРОКИ В PYTHON И МЕТОДЫ РАБОТЫ С НИМИ" print(str.upper()) # Выведет "строки в python и методы работы с ними"
Чтобы первая буква в строке стала заглавной, следует использовать метод capitalize():
str = "строки в python и методы работы с ними" print(str.capitalize()) # Выведет "Строки в python и методы работы с ними"
Удаление лишних пробелов из строк
Метод strip() удаляет пробельные символы в начале и в конце строки. lstrip() и rstrip() делают то же самое, но в определенных местах: первый метод в начале строки, а второй – в ее конце.
Итог
Мы разобрали основные методы работы со строками в Python. Предлагайте идеи для статей и удачи в ваших начинаниях!
Как сложить числа в строке python



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
