Методы получения целых значений при вводе в Python
Ввод целого числа в Python
Наиболее универсальный и эффективный способ получить целые числа из текстового источника (клавиатура, файл, строка) состоит в комбинации методов split() и map(int, ...). Этот подход позволяет обработать строку с числами, разделёнными любыми пробельными символами, и сразу преобразовать их в целые.
# Пример: чтение всех целых чисел из строки
numbers = list(map(int, "10 20 30 40".split()))
print(numbers) # [10, 20, 30, 40]
ввод программ на python (ввод данных в программе python)
[10, 20, 30, 40]
Python file io (ввод-вывод файлов в python)
Для чтения из файла весь текст загружается в память методом read(), затем применяется та же техника:
with open('numbers.txt', 'r') as f:
data = f.read()
numbers = list(map(int, data.split()))
print(numbers)
Python temp files (временные файлы в python)
Если файл очень большой, лучше читать построчно с помощью цикла, чтобы не загружать всё сразу:
numbers = []
with open('big_numbers.txt', 'r') as f:
for line in f:
numbers.extend(map(int, line.split()))
Python index files (индексация файлов в python)
Типичная ошибка: если в строке встречается нечисловое значение, возникает ValueError. Решается фильтрацией или использованием try/except.
Пример обработки:
def safe_int(x):
try:
return int(x)
except ValueError:
return None
with open('mixed.txt') as f:
vals = [safe_int(token) for token in f.read().split()]
numbers = [v for v in vals if v is not None]
File python class (класс для работы с файлами в python)
Как ввести одно целое число с клавиатуры?
Используется встроенная функция input(), которая возвращает строку. Её нужно преобразовать в целое число функцией int().
s = input() # пользователь вводит, например, 42
value = int(s)
print(value + 1) # 43
Python file utf 8 (кодировка utf-8 для файлов в python)
Если введено не число, произойдёт ValueError. Рекомендуется оборачивать в try/except.
Как получить несколько целых чисел, введённых в одной строке?
Используется уже описанный метод input().split() и map.
a, b, c = map(int, input().split())
print(a, b, c)
Python config files (конфигурационные файлы в python)
Если количество чисел заранее неизвестно, удобно собрать их в список:
numbers = list(map(int, input().split()))
Python copy file (копирование файла в python)
Как прочитать целые числа из файла, игнорируя пустые строки?
Пустые строки дают пустой список после split(), что не вызывает ошибки. Но если файл содержит только пробелы, нужно проверять результат.
with open('data.txt') as f:
nums = []
for line in f:
if line.strip(): # если строка не пуста после удаления пробелов
nums.extend(map(int, line.split()))
Python log file (логирование в файл в python)
Как обработать ввод чисел из стандартного потока (sys.stdin)?
Полезно при работе с консольными командами и пайпами. sys.stdin.read() читает весь ввод до EOF.
import sys
data = sys.stdin.read()
numbers = list(map(int, data.split()))
print(sum(numbers))
Python file methods (методы работы с файлами в python)
Этот способ эквивалентен чтению из файла, если перенаправить stdin.
Как получить целые числа из строки с произвольными разделителями?
Если разделители не пробелы (например, запятые или точки с запятой), применяется re.split() из модуля re.
import re
s = "1, 2; 3 4:5"
numbers = list(map(int, re.split(r'[;,:\s]+', s)))
print(numbers) # [1, 2, 3, 4, 5]
File models in python (модели файлов в python)
Ошибки при работе с файлами: если файл не существует, возникает FileNotFoundError. Нужно обрабатывать через try/except или проверять существование.
Пример безопасного открытия:
try:
with open('nums.txt') as f:
data = f.read()
except FileNotFoundError:
print("Файл не найден")
numbers = []
Расширенные примеры ввода целых чисел
Чтение чисел из файла с пропуском некорректных строк
def parse_ints_from_file(filename):
valid = []
with open(filename) as f:
for line_num, line in enumerate(f, 1):
for token in line.split():
try:
valid.append(int(token))
except ValueError:
print(f"Строка {line_num}: пропущен некорректный токен '{token}'")
return valid
# Пример использования
result = parse_ints_from_file('dirty_data.txt')
print(result)
Строка 3: пропущен некорректный токен 'abc' [10, 20, 40]
Генератор для потоковой обработки больших файлов
def int_generator_from_file(filename):
with open(filename) as f:
for line in f:
for token in line.split():
try:
yield int(token)
except ValueError:
continue
# Сумма всех чисел без загрузки в память
total = sum(int_generator_from_file('huge.txt'))
print(total)
Использование регулярных выражений для извлечения чисел из сложного текста
import re
text = "Цена: 150 рублей, скидка 15%, осталось 30 штук."
numbers = list(map(int, re.findall(r'\d+', text)))
print(numbers) # [150, 15, 30]
[150, 15, 30]
Чтение чисел из строки в формате CSV с помощью модуля csv
import csv
csv_data = "10,20,30\n40,50,60\n"
reader = csv.reader(csv_data.splitlines())
numbers = []
for row in reader:
numbers.extend(map(int, row))
print(numbers) # [10, 20, 30, 40, 50, 60]
[10, 20, 30, 40, 50, 60]
Обработка ввода с клавиатуры до определённого сигнала (например, пустая строка)
def read_ints_until_empty():
numbers = []
while True:
line = input()
if not line:
break
numbers.extend(map(int, line.split()))
return numbers
print("Вводите числа, для завершения оставьте строку пустой:")
result = read_ints_until_empty()
print("Введены числа:", result)
Вводите числа, для завершения оставьте строку пустой: 1 2 3 4 5 Введены числа: [1, 2, 3, 4, 5]
Использование модуля numpy для массового чтения чисел (если установлен)
import numpy as np
# файл data.txt содержит числа, разделённые пробелами или переводами строк
arr = np.loadtxt('data.txt', dtype=int)
print(arr)
[10 20 30 40]
Этот метод удобен для научных расчётов, но требует установки numpy.
Обработка ввода из файла с игнорированием комментариев
with open('config.txt') as f:
numbers = []
for line in f:
clean = line.split('#')[0].strip() # удаляем комментарии
if clean:
numbers.extend(map(int, clean.split()))
print(numbers)
Файл config.txt:
10 20 # это комментарий 30 40 # ещё один
[10, 20, 30, 40]