разделение строки на две части с использованием пробела в качестве разделителя в качестве основы для разделения - PullRequest
0 голосов
/ 21 февраля 2020

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

Я пишу программу, в которой человек должен ввести свое имя и фамилию. как строка Затем программа должна извлечь первые три буквы из имени и первые три буквы из фамилии. Соедините их и добавьте к имени домена, создав электронное письмо. Например, Имя Имя Фамилия становится firlas@example.com. Я знаю, что могу легко решить эту проблему, просто используя два входа, но я хочу, чтобы это был только один вход.

def create_email_address():
name = input("Please input your first and last name: ")
domain = "@aperturescience.com"


email_address = str.lower(name[:3]) + str.lower(name[10:13]) + domain
print(str(email_address))

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

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

Возможно ли это? и если да, то какие советы?

Спасибо!

Ответы [ 6 ]

3 голосов
/ 21 февраля 2020
def create_email_address():

  name = input("Please input your first and last name: ")
  domain = "@aperturescience.com"

  names=name.split()
  email_address = str.lower(names[0][:3]) + str.lower(names[1][:3]) + domain
  print(str(email_address))

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

2 голосов
/ 21 февраля 2020

Используйте метод str.split(), чтобы получить имя и фамилию. Примечание: если вы не укажете атрибуты, он будет разделен не только пробелом, но и всеми символами пробела (например, "\ n" - новая строка)

Вот части вашего кода, которые должны быть исправлено:

1) Лучше использовать name[:3].lower() вместо str.lower(name[:3]), хотя код отлично работает в обоих случаях. В Python мы почти всегда вызываем метод класса из уже созданного экземпляра (str_instance.lower() вместо str.lower(str_instance)

2). Вы не должны использовать print(str(...)), потому что print преобразует результат в строку, даже если вы не указали это явно. Более того, в данном случае это уже строка.

Итак, вот полный фиксированный код:

first, last = input("Please input your first and last name: ").split()
domain = "@aperturescience.com"


email_address = first[:3].lower() + last[:3].lower() + domain
print(email_address)
1 голос
/ 24 февраля 2020

Я вижу, что вариант использования, где имя содержит более двух слов (например, отчество), не был адресован. Итак, вот моя попытка ответить,

def create_email():
   name = input("Enter Full Name : ")
   domain = "example.com"
   email = name[:3].lower() + name.split()[-1][:3].lower() + "@" + domain
   print(email)

Пара указателей на код выше:

  1. вам не нужно split, чтобы получить первые три буквы имя, так как это всего лишь первые три буквы полного имени
  2. name.split()[-1] получит фамилию из полного имени, а [:3] получит первые три буквы фамилии
1 голос
/ 21 февраля 2020

Пока мы все даем решения, я просто дам вам плохой ответ. Один вкладыш:

>>> print("".join(["".join([i[:3].lower() for i in input("Enter your full name: ").split(" ")]), "@example.com"]))
Enter your full name: Albert Finksson
albfin@example.com

Этот почти не читается, хотя, ради вас и других в будущем, используйте другие решения.

1 голос
/ 21 февраля 2020

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

import re

pattern = re.compile('\W+')

name = "Jerry Maguire"

split_names = pattern.split(name)

split_names
Out[24]: ['Jerry', 'Maguire']

name = "FrodoBaggins"

split_names = pattern.split(name)

split_names
Out[27]: ['FrodoBaggins']

Это будет обрабатывать сценарий ios, где нет пробелов или если имя нужно разделить на несколько строк.

1 голос
/ 21 февраля 2020

Вы можете использовать str.split() примерно так:

# get user input:
full_name = input('Enter your full name: ')

# split user input on white space, this will return a list:
first_name = full_name.split()[0]
last_name = full_name.split()[1]

# get first three characters in string:
first_name_first_three = first_name[0:3]
last_name_first_three = last_name[0:3]

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