Как читать входные данные, разделенные пробелами в python, как разные типы данных, динамически предпочтительно в список? - PullRequest
0 голосов
/ 22 апреля 2020

Есть ли способ вставить первый ввод как str следующий ввод как int и следующий as float в список. Предполагая, что три входа разделены пробелами, принимаются за вход.

data = map(str,int,float,input.split()) # Something like this, I know the syntax here is wrong

Ответы [ 4 ]

1 голос
/ 22 апреля 2020

Вы можете сделать это просто:

task = input().split()
task[1] = int(task[1])
task[2] = float(task[2])

или более запутанным способом:

task = [ f(x) for (f, x) in zip([str, int, float], input().split()) ]
0 голосов
/ 22 апреля 2020

Не существует какого-либо доступного способа сделать это, но вы можете написать свою собственную функцию для него; например:

def my_input(data_types):
    user_input = input()
    split_user_input = user_input.split()
    converted_input_tokens = []

    for input_token, data_type in zip(split_user_input, data_types):
        converted_input_tokens.append(data_type(input_token))

    return converted_input_tokens

Это будет делать именно (не больше, не меньше) то, что вы показали в приведенном вами примере. Вы можете использовать это следующим образом:

>>> my_input((str, int, float))
1 2 3

Что вернет:

['1', 2, 3.0]

Конечно, это можно сделать гораздо более обобщенным c. Например, вы можете добавить аргументы для приглашения ввода, sep и maxsplit для метода str.split, используемого в функции, и т. Д. c.

Если вы сомневаетесь в том, как Сделайте это, посмотрите официальную документацию для input, str.split, а также проведите некоторые исследования по преобразованию типов в Python.

0 голосов
/ 22 апреля 2020

Да, вы можете сделать это. Попробуйте это:

>>> task = input().split()
hello 3 42.3
>>> task       # task is a list of strings
['hello', '3', '42.3']

# get the 3 parts of task

>>> string = task[0]
>>> int = int(task[1])
>>> float = float(task[2])
>>> string, int, float
('hello', 3, 42.3)
0 голосов
/ 22 апреля 2020

Вы можете явно определить каждый вход как определенный тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...