Программа: слова после "g" / "g" (python)

Я недавно начал изучать питон, так как в будущем хочу войти в сферу глубокого обучения. Поскольку я совершенно новичок и только начал, заранее прошу прощения, если мой вопрос глупый. В настоящее время я прохожу курс по edx по имени, введение в основы Python, и, поскольку я завершаю проект модуля 1, мне нужно создать программу, которая запрашивает ввод пользователя и выводит все слова, которые начинаются с h до z.

задача

enter image description here

вот мой код:

user_input = input("enter a 1 sentence quote, non-alpha separate words: ")
new_name = ""
for letter in user_input:
    if letter.isalpha() == True:
        new_name += letter.upper()
    elif letter.isalpha() == False:
        if new_name[0] > "g":
            print(new_name)
            new_name = ""
        else:
            new_name = "\n"
print(new_name)

INPUT = Куда бы вы ни пошли, идите от всего сердца ВЫХОД = ГДЕ ВСЕГДА ВЫ ИТО ВСЕГО СЕРДЦЕ

По моему пониманию кода я написал: - пользователь вводит ввод - проверка кода для каждого символа - если буква альфа, эта буква добавляется в переменную new_name - при первом обнаружении в этом случае нет альфа-символа пробел после слова Где бы код ни переместился на elif, так как после проверки первого он не был True и elif переходит к критерию mach - затем, используя вложенный оператор if, он проверяет, является ли переменная new_name [index0] (Где бы то ни было) больше, чем g. - если он больше, он печатает new_name и делает new_name пустым и повторяет круг, пока не останется больше символов для проверки. - если не больше, то g начинается с нового слова в новой строке

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

Заранее спасибо :)

Вам не нужно сравнивать логические значения, чтобы принимать решения. Вместо if foo == True: говорят if foo:. Вместо if foo == False: говорят if not foo:.

Adrian W 10.09.2018 08:16

Вы хотите, чтобы ваш результат был таким? "ГДЕ ВСЕГДА ВЫ ПОСЕТИТЕ СЕРДЦЕ"? Или это ? "Куда бы ты ни сердцем"

Vineeth Sai 10.09.2018 08:27

@AdrianW Я внес эти изменения, и это сократило мой код, и я узнал что-то новое, но все равно мой код не дал желаемый результат

tkala 10.09.2018 08:34

@VineethSai "Куда бы вы ни сердились" все верхние буквы и каждое слово в новой строке

tkala 10.09.2018 08:35

@tkala Отредактировал мой

U11-Forward 10.09.2018 08:38
1
5
1 710
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте следующее, выполните итерацию по разделению списка строки user_input, затем проверьте, начинается ли она с G или g, если да, не сохраняйте ее, в противном случае сохраняйте ее, затем используйте регулярные выражения (re), чтобы получить только буквы .

Также, как вы сказали, вам нужен isalpha, поэтому:

user_input = input("enter a 1 sentence quote, non-alpha separate words: ")
print('\n'.join([''.join(x for x in i if x.isalpha()).upper() for i in user_input.split() if not i.lower().startswith('g')]))

Пример вывода:

enter a 1 sentence quote, non-alpha separate words: Wheresoever you go, go with your heart
WHERESOEVER
YOU
WITH
YOUR
HEART

Форма обновления @KillPinguin:

делать:

user_input = input("enter a 1 sentence quote, non-alpha separate words: ")
print('\n'.join([''.join(x for x in i if x.isalpha()).upper() for i in user_input.split() if ord(i[0])>ord('g')]))

@tkala Отредактировал мой

U11-Forward 10.09.2018 08:25

Привет, спасибо за ответ! Мне не разрешено использовать импорт, и я должен решить задачу только с их помощью: ПРИМЕЧАНИЕ. Эта программа требует вывода на печать и использования синтаксиса кода, используемого в модуле 1 (Доступ к строковым символам с индексом Доступ к подпрограмме -строки с нарезкой индекса. Итерация символов строки. Другие строковые методы [.len (), .count (),. find ()]), такие как ключевые слова для / in (итерация), input, if, else, .isalpha ( ), метод .lower () или .upper ()

tkala 10.09.2018 08:26

@tkala Отредактировал мой

U11-Forward 10.09.2018 08:37

new_name1 = '\ n'.join ([' '. join (x for x in i if x.isalpha ()) for i in user_input.split () if not i.lower (). startwith (' g ')] ) print (new_name1.upper ()) Я создал новую переменную с помощью syntex, который вы доказали, и напечатал с помощью mehtod для вызова всего верхнего. Спасибо :))

tkala 10.09.2018 08:40

@tkala Рад, что помог,

U11-Forward 10.09.2018 08:57

Почему вы используете if not ... startswith('g')? Это также даст вам слова, начинающиеся с a-f, которые вы не упомянули в формулировке проблемы. Если вам действительно нужны слова, начинающиеся только с h-z, тогда вам следует использовать if ord(i[0]) > ord('g')

KillPinguin 10.09.2018 09:28

@KillPinguin Готово!

U11-Forward 10.09.2018 09:30

Другие вопросы по теме