Python дескриптор ввода (). Split с регистром по умолчанию - PullRequest
0 голосов
/ 08 января 2020

Как обрабатывать input (). Split (), если я ввожу только 1 параметр?

surname = "Smith";

# if I enter name and surname => print name and surname
# if I enter only name print name and "Smith" as surname

name, surname = input("\n Enter name ").split()
print("name :",name)
print("surname:",surname)

Думаю, мне нужно попробовать, кроме ...? Любое предложение?

Ответы [ 3 ]

1 голос
/ 08 января 2020

Если вы используете Python 3, вы можете использовать Расширенная итеративная распаковка (только учтите, что surname будет списком):

name, *surname = input("\n Enter name ").split()
if not surname:
    surname = ['Smith']
print("name :",name)
print("surname:", ' '.join(surname))

Примеры

Enter name a
name : a
surname: Smith

Enter name a b c
name : a
surname: b c

Enter name a bc
name : a
surname: bc

try-except можно использовать для более явного решения:

split_name = input("\n Enter name ").split(' ', maxsplit=1)
try:
    name, surname = split_name
except ValueError:
    name, surname = split_name[0], 'Smith'
print("name :", name)
print("surname:", surname)

Вывод такой же, как и раньше

Enter name a
name : a
surname: Smith

Enter name a bc
name : a
surname: bc

Enter name a b c
name : a
surname: b c
0 голосов
/ 08 января 2020

Вы можете сделать что-то вроде этого:

 surname = 'Smith'
 data = raw_input("\n Enter name ").split()

 if len(data) == 1:
     name, surname = data[0],surname 
 else:
     name = data[0]
     data.remove(data[0])
     surname = ''.join(data)
 print("name :",name)
 print("surname:",surname)
0 голосов
/ 08 января 2020

Включая регистр из трех слов.

sent = input("\n Enter name ").split()

if len(sent) == 1:
    name, surname = sent[0], '-'
else:
    name = sent[0]
    sent.remove(sent[0])
    surname = ' '.join(sent)
print(name, " ", surname)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...