2016-02-24 5 views
-1

Как извлечь первую и последнюю половину имени, которое вводится пользователем? Я уже разделил имя так, чтобы у меня был список, и я установил переменные firstName и lastName. Если первое имя имеет нечетное число букв, средняя буква не включена, но если второе имя имеет нечетное число букв, средняя буква - включена. Как я могу это достичь?Извлечение символов из строки в Python

Пример Имена:

  • Мари Морзе -> Marse
  • Logan Peters -> Loers
  • Meghan Хюфнер -> Megner
+4

Как насчет кодов, отражающих вашу попытку ... с примерами о том, ввод и ожидаемый результат? –

+2

Пример ввода и вывода будет * действительно * полезным. – zondo

+0

Примеры @zondo редактируются в! – katherinethegrape

ответ

0

Нечто подобное может работать для вас:

>>> def concatenate(s): 
     s1,s2 = s.split() 
     i,j = len(s1)//2, len(s2)//2 
     return s1[:i]+s2[j:] 

>>> s = 'Meghan Hufner' 
>>> concatenate(s) 
'Megner' 
>>> s = 'Helen Paige' 
>>> concatenate(s) 
'Heige' 
>>> s = 'Marie Morse' 
>>> concatenate(s) 
'Marse' 
>>> s = 'Logan Peters' 
>>> concatenate(s) 
'Loers' 
+0

Это сработало! Огромное спасибо!! Я просто должен был работать в этой функции, но это сработало! – katherinethegrape

+0

@katherinethegrape ... Вы можете показать это на S.O. сообществом, приняв этот ответ. –

0

Вы должны назвать каждую первую и фамилию в виде и сделать следующее:

first = 'Marie' 
last = 'Morse' 
first_index = len(first)/2 +1 
last_index = len(last)/2 
result = first[:first_index] + last[last_index+1:] 
print result 
0

Что происходит, что на самом деле вы используете либо flooring или ceiling деление. Чтобы получить номер ceiling, вы можете использовать функцию math.ceil(). Ниже приведено небольшое переполнение для Python3, но я использую int(math.ceil...), потому что в Python2 math.ceil() возвращает float. Я также использую len(last)/2., потому что в Python2 деление целого на целое число всегда приводит к целому числу. (разделение полов). Далее предполагается, что firstName и lastName уже определены:

import math 

first_index = len(firstName) // 2    # floor division 
last_index = int(math.ceil(len(lastName)/2.)) # ceiling division 

print(first[:first_index] + last[-last_index:]) 
Смежные вопросы