Удаление пробела с помощью .strip () не работает - PullRequest
0 голосов
/ 02 октября 2019

У меня есть домашнее задание, над которым я работаю. У меня все работает, кроме части, чтобы удалить пробелы. Я поместил код .strip () в конец строки ввода, но он не работает. Он все еще выводит Аллена с пробелом перед ним, когда ввод - Джилл, Аллен. Справка!

МОЙ КОД:

string = input('Enter input string: \n').strip()

while string:
    if string == 'q':
        break
    elif ',' in string:
        words = string.split(',')
        first_word = words[0]
        second_word = words[1]
        print('First Word:', first_word)
        print('Second Word:', second_word)
        break
    else:
        print('Error: No comma in string.')

    string = input('Enter input string: \n').strip()

МОЕ НАЗНАЧЕНИЕ:

Запрашивает у пользователя строку, содержащую две строки, разделенные запятой.

Примеры строк, которые могут быть приняты:

Джилл, Аллен

Джилл, Аллен

Джилл, Аллен Пример:

Enterвходная строка: Jill, Allen

Сообщить об ошибке, если входная строка не содержит запятой. Продолжайте запрашивать, пока не будет введена правильная строка. Примечание. Если вход содержит запятую, то предположим, что вход также содержит две строки.

Пример:

Введите строку ввода: Jill Allen

Ошибка:В строке нет запятой.

Введите строку ввода: Джилл, Аллен

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

Пример:

Введите строку ввода: Джилл, Аллен

Первое слово: Джилл

Второе слово: Аллен

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

Например:

Введите строку ввода: Джилл, Аллен

Первое слово: Джилл

Второйслово: Аллен

Введите строку ввода: Золотой, Обезьяна

Первое слово: Золотой

Второе слово: Обезьяна

Введите строку ввода: Вашингтон, округ Колумбия

Первое слово: Вашингтон

Второе слово: DC

Введите строку ввода: q

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Вы можете просто применить strip к разделенным токенам:

first_word = words[0].strip()
second_word = words[1].strip()
print('First Word: ', first_word)
print('Second Word: ', second_word)
0 голосов
/ 02 октября 2019

Когда вы вызываете .strip() в первый раз, вы удаляете начальные и конечные пробелы для всей входной строки.

Таким образом, если input() получает строку " Jill, Allen " (которая имеет три пробела - в позиции 0, позиции 6 и позиции 12), то при вызове .strip() для этой строки она удаляет первуюи последний пробел (позиции 0 и 12), но сохраняет средний пробел (позиция 6) и возвращает строку "Jill, Allen".

После разделения на запятые python разделит эту строку на ["Jill", " Allen"]. Вы можете разделить запятую и пробел (", "), но было бы лучше разделить запятые и затем вызвать .strip() для обоих имен. Например:

string = input('Enter input string: \n').strip()
#...
words = string.split(',')
first_word = words[0].strip()
second_word = words[1].strip()

print(" " in first_word)  # False
print(" " in second_word) # False

Надеюсь, это поможет!

...