ввод в одну строку двух переменных, у одной из которых несколько значений
Мне нужно сделать ввод в одну строку двух переменных, но одна из них содержит в себе несколько значений, как я могу это сделать? Пример: 5 1 2 3 4, где 5 это переменная N, а 1 2 3 4, переменная a. Сейчас же у меня получается: 5 1 2 3 4 Вот код который у меня есть на данный момент
n=int(input()) a = map(int,input().split()) g=1 while True: if g not in a: print(g) break else: g=g+1
Отслеживать
задан 15 фев 2021 в 11:02
user429660 user429660
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
n, *a = map(int, "1 2 3 4 5".split()) print( n ) # 1 print( a ) # [2, 3, 4, 5]
Первое значение попадет в n , оставшиеся соберутся в a в виде массива.
Отслеживать
ответ дан 15 фев 2021 в 11:13
OPTIMUS PRIME OPTIMUS PRIME
27.1k 3 3 золотых знака 23 23 серебряных знака 48 48 бронзовых знаков
Ввод n элементов в одну строку
пояснение: input() содержит введённую строку, .split() разбивает её по пробельным символам, создавая список полученных значений, дальше каждый элемент этого списка превращается в int , и добавляется в список i
Это выражение аналогично следующему:
i = [] for a in input().split(): i.append( int(a) )
IN: "12 214 5 24 5" OUT: [12, 214, 5, 24, 5]
использование в вашей программе:
i = 1 k = 0 p = 0 n = int(input()) # не будет использоваться nums = [int(a) for a in input().split()] for a in nums: if a % 2 == 0: k += 1 if a % 2 != 0: p += 1 print(abs(k-p))
Ввод и вывод в одну строку на Python
После того, как пользователь завершит ввод, в любом случае произойдёт перевод строки. Но можно вернуться на предыдущую строку вот так:
import sys a, b = map(int, input().split()) c = a + b sys.stdout.write("\x1b[1A") sys.stdout.write('<> <> <>'.format(a, b, c))
Правда, с обработкой некорректных значений тут сложнее. Даже если как в вашем примере всё это дело обернуть в try . except , то у меня всё рано пока не получается избавиться от ввода, оставшегося с предыдущей итерации.
UPD: Сейчас подумал, что можно чистить остатки предыдущий итерации ДО инпута. Но в этом случае нужно отслеживать — а была ли предыдущая итерация или сейчас пока первая:
import sys is_first_try = True while True: try: if not is_first_try: sys.stdout.write("\x1b[1A" + " "*20 + "\b"*20) is_first_try = False a, b = map(int, input().split()) c = a + b sys.stdout.write("\x1b[1A") sys.stdout.write('<> <> <>'.format(a, b, c)) except ValueError: continue else: break
Как реализовать ввод двух чисел в одну строку через запятую? [дубликат]
нужно ввести два числа 0,0 как сделать такой строчный ввод через запятую ,причем чтобы в каждую переменную записывалось соответствующее число?
Отслеживать
задан 2 янв 2021 в 15:26
823 1 1 золотой знак 9 9 серебряных знаков 29 29 бронзовых знаков
Возможный дубликат вопроса: Как ввести в одной строке n переменных
2 янв 2021 в 15:31
@Sadykhzadeh скажите , в чем интересно дубликат? мне нужно просто реализовать ввод в строку двух переменных через ЗАПЯТУЮ, а то что предложили Вы, там просто вводе определенного кол-ва переменных ,зависящих от введенного числа(кол-ва раз)
3 янв 2021 в 13:24
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
a, b = map(int, input().split(",")) print(a, b)
если чисел не ограничено, то можно их писать в список:
arr = list(map(int, input().split(','))
вместо map можно использовать for , но код будет подлиннее:
arr = [int(i) for i in input().split(',')]
Отслеживать
ответ дан 2 янв 2021 в 15:28
37.2k 4 4 золотых знака 27 27 серебряных знаков 70 70 бронзовых знаков
а как это можно сделать без map?
2 янв 2021 в 15:30
@марат, привел код через for
2 янв 2021 в 15:30
-
Важное на Мете
Связанные
Похожие
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
