Перейти к содержимому

Как соединить цифры в питоне

  • автор:

Как в питоне соединить одно число с рандомным?

А что вы вообще имеете ввиду под странным словом «соединить»?
Варианты ответа:
-просто сложить.
-написать оба числа одной строкой.
-написать два числа через символ «+»
-написать два числа одно за другим.
Дайте пример ожидаемого ответа.
Про то, какую роль тут играет рандомность второго числа — я даже вопроса не задаю.
Но программирования не терпит небрежности. А небрежность в программировании начинается с небрежно заданных вопросов. Уточните, что-бы получить корректный ответ.

Решения вопроса 0
Ответы на вопрос 1

У тебя :
a — это переменная , при выводе переменные содержащие числа используются без кавычек
Иначе говоря у тебя все правильно кроме 4 строчки
Вот как надо было :

import random a=2 randomnumber = random.randint(1000000000, 9999999999) print (a + str(randomnumber))

Объединение элементов списка: из цифр сделать целое число

Есть список gen = [1,2,3,4] Необходимо объединить элементы в число, чтобы получилось 1234 . У меня получилось так:

chislo = int(''.join((str(i) for i in gen))) 

Нет ли способа проще, без преобразования типов?
Отслеживать
7,797 13 13 золотых знаков 25 25 серебряных знаков 55 55 бронзовых знаков
задан 14 дек 2016 в 11:15
user215403 user215403
21 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака
Связанный вопрос: Convert list of ints to one number?
24 янв 2017 в 8:50
ассоциация: stackoverflow.com/questions/489999/…
2 мар 2017 в 14:28

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Чтобы последовательность цифр в число превратить:

digits = [1, 2, 3, 4] number = int(''.join(map(str, digits))) # -> 1234 

Это близко к коду в вопросе и преобразует все цифры в строки, объединяет их в одну строку, которая преобразуется в целое число. Это уродливый (из-за преобразований туда-сюда: intstr ), но более быстрый способ для тысяч цифр по сравнению с reduce() решением ниже.

Можно обойтись без преобразований типа:

from functools import reduce number = reduce(lambda n, d: 10*n + d, digits) 

где вместо reduce() можно явно цикл написать:

number = digits[0] for d in digits[1:]: number = 10 * number + d 
number = 1 number = 10 * 1 + 2 = 12 number = 10 * 12 + 3 = 123 number = 10 * 123 + 4 = 1234 

Python: Переменные и конкатенация

Попробуем использовать переменные с конкатенацией, при этом синтаксически ничего не поменяется. Мы умеем конкатенировать две строки:

what = "Kings" + "road" print(what) # => Kingsroad 

Значит, мы сумеем склеить строку и одну переменную, в которой записана строка:

first = "Kings" what = first + "road" print(what) # => Kingsroad 

А еще можно конкатенировать две переменные, в которых записаны строки:

first = "Kings" last = 'road' what = first + last print(what) # => Kingsroad 

Переменные — важный инструмент в программировании. Они упрощают сложные вычисления и таким образом облегчают разработку. Но чтобы успешно работать с переменными, надо не только правильно использовать их, но и правильно называть. Об этом поговорим уже в следующем уроке.

Задание

Сайты постоянно посылают письма своим пользователям. Типичная задача — сделать автоматическую отправку персонального письма, где в заголовке будет имя пользователя. Если где-то в базе сайта хранится имя человека в виде строки, то задача генерации заголовка сводится к конкатенации: например, нужно склеить строку Здравствуйте со строкой, где записано имя.

Напишите программу, которая будет генерировать заголовок и тело письма, используя уже готовые переменные, и выводить получившиеся строки на экран.

Для заголовка используйте переменные first_name и greeting , запятую и восклицательный знак. Выведите это на экран в правильном порядке.

Для тела письма используйте переменные info и intro , при этом второе предложение должно быть на новой строке.

Результат на экране будет выглядеть так:

Hello, Joffrey! Here is important information about your account security. We couldn't verify your mother's maiden name.

Выполните задание, используя только два print() .

Упражнение не проходит проверку — что делать? ��

Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

  • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

В моей среде код работает, а здесь нет ��

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя ��

Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно ��

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.

Полезное

  • Подумайте, с какой строкой и в каком порядке нужно склеивать переменные, чтобы получить такой двухстрочный вывод тела письма.
  • Помните, что можно создать строку, которая содержит только управляющую последовательность \n . Вы можете конкатенировать эту строку с переменными для правильного форматирования текста.

Определения

  • Конкатенация — операция соединения двух строк. Например, console.log(«King’s » + ‘ Landing’);

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics

Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе

  • Привет, Мир!
  • Комментарии
  • Инструкции (Statements)
  • Как мы проверяем ваши решения
  • Синтаксические ошибки
  • Арифметические операции
  • Операторы
  • Коммутативная операция
  • Композиция операций
  • Приоритет
  • Числа с плавающей точкой
  • Линтер
  • Кавычки
  • Экранированные последовательности
  • Конкатенация
  • Кодировка
  • Что такое переменная
  • Изменение переменной
  • Выбор имени переменной
  • Ошибки при работе с переменными
  • Выражения в определениях
  • Переменные и конкатенация
  • Именование переменных
  • Магические числа
  • Константы
  • Интерполяция
  • Извлечение символов из строки
  • Срезы строк
  • Multi-line строки
  • Типы данных
  • Сильная (или Строгая) типизация
  • Неизменяемость примитивных типов
  • Явное преобразование типов
  • Функции и их вызов
  • Сигнатура функции
  • Аргументы по умолчанию
  • Вызов функции — выражение
  • Функции с переменным числом параметров
  • Детерминированность
  • Стандартная библиотека
  • Объекты
  • Неизменяемость
  • Методы как выражения
  • Цепочка вызовов
  • Создание (определение) функций
  • Возврат значений
  • Параметры функций
  • Необязательные параметры функций
  • Именованные аргументы
  • Аннотации типов
  • Логический тип
  • Предикаты
  • Комбинирование операций и функций
  • Логические операторы
  • Отрицание
  • Результат логических выражений
  • Условная конструкция (if)
  • Условная конструкция else
  • Конструкция else + if = elif
  • Тернарный оператор
  • Оператор Match
  • Цикл While
  • Агрегация данных (Числа)
  • Агрегация данных (Строки)
  • Обход строк
  • Условия внутри тела цикла
  • Формирование строк в циклах
  • Пограничные случаи
  • Синтаксический сахар
  • Возврат из циклов
  • Цикл For
  • Цикл for и функция range

Массивы

Большинство программ работает не с отдельными переменными, а с набором переменных. Например, программа может обрабатывать информацию об учащихся класса, считывая список учащихся с клавиатуры или из файла, при этом изменение количества учащихся в классе не должно требовать модификации исходного кода программы.

Раньше мы сталкивались с задачей обработки элементов последовательности, например, вычисляя наибольший элемент последовательности. Но при этом мы не сохраняли всю последовательность в памяти компьютера, однако, во многих задачах нужно именно сохранять всю последовательность, например, если бы нам требовалось вывести все элементы последовательности в возрастающем порядке (“отсортировать последовательность”).

Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:

Primes = [2, 3, 5, 7, 11, 13]
Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

В списке Primes — 6 элементов, а именно, Primes[0] == 2, Primes[1] == 3, Primes[2] == 5, Primes[3] == 7, Primes[4] == 11, Primes[5] == 13. Список Rainbow состоит из 7 элементов, каждый из которых является строкой.

Также как и символы строки, элементы списка можно индексировать отрицательными числами с конца, например, Primes[-1] == 13, Primes[-6] == 2.

Длину списка, то есть количество элементов в нем, можно узнать при помощи функции len, например, len(A) == 6.

Рассмотрим несколько способов создания и считывания списков. Прежде всего можно создать пустой список (не содержащий элементов, длины 0), в конец списка можно добавлять элементы при помощи метода append. Например, если программа получает на вход количество элементов в списке n, а потом n элементов списка по одному в отдельной строке, то организовать считывание списка можно так:

A = []
for i in range(int(input()):
A.append(int(input())

В этом примере создается пустой список, далее считывается количество элементов в списке, затем по одному считываются элементы списка и добавляются в его конец.

Для списков целиком определены следующие операции: конкатенация списков (добавление одного списка в конец другого) и повторение списков (умножение списка на число). Например:

A = [1, 2, 3]
B = [4, 5]
C = A + B
D = B * 3

В результате список C будет равен [1, 2, 3, 4, 5], а список D будет равен [4, 5, 4, 5, 4, 5]. Это позволяет по-другому организовать процесс считывания списков: сначала считать размер списка и создать список из нужного числа элементов, затем организовать цикл по переменной i начиная с числа 0 и внутри цикла считывается i-й элемент списка:

A = [0] * int(input())
for i in range(len(A)):
A[i] = int(input())

Вывести элементы списка A можно одной инструкцией print(A), при этом будут выведены квадратные скобки вокруг элементов списка и запятые между элементами списка. Такой вывод неудобен, чаще требуется просто вывести все элементы списка в одну строку или по одному элементу в строке. Приведем два примера, также отличающиеся организацией цикла:

for i in range(len(A)): 
print(A[i])

Здесь в цикле меняется индекс элемента i, затем выводится элемент списка с индексом i.

for elem in A: 
print(elem, end = ' ')

В этом примере элементы списка выводятся в одну строку, разделенные пробелом, при этом в цикле меняется не индекс элемента списка, а само значение переменной (например, в цикле for elem in [‘red’, ‘green’, ‘blue’] переменная elem будет последовательно принимать значения ‘red’, ‘green’, ‘blue’.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *