Почему цикл не обрабатывает всю входную строку? - PullRequest
0 голосов
/ 05 января 2019

Я новичок в программировании на Python. Я обучаюсь онлайн-курсу DEV274X: Введение в основы Python, предоставляемые Microsoft.

Для моего первого назначения мне пришлось написать код, который обрабатывает данную строку и печатает слова, чьи первые буквы больше или равны 'h', в новой строке

Только с использованием следующих методов: for / in (итерация), ввод, если, иначе, метод .isalpha (), .lower () или .upper (). Строка была «Куда бы ты ни пошел, иди от всего сердца», и желаемый результат был enter image description here

Мой код и вывод, который я получил, были

enter image description here

Может ли кто-нибудь помочь мне, рассказав, что не так с этим кодом?

Ответы [ 2 ]

0 голосов
/ 05 января 2019
quote="wheresoever you go,go with your heart"
newword=""
for letter in quote:
    if letter.isalpha():
        newword = newword + letter
    else:
        print(newword)
        if newword[0].lower()>='h':
            print(newword.upper())
            newword=""
        else:
            newword=""
if newword[0].lower()>='h':
    print(newword.upper())

это типичная проверка состояния ребра. Ваш код полагается на новое письмо, чтобы определить, должно ли распечатываться текущее слово или нет. «Сердце» - последнее слово, и оно должно быть проверено в конце цикла for.

0 голосов
/ 05 января 2019

Я думаю, что ваш код верен, просто небольшая ошибка. Последняя строка

print(ltr)

, который будет печатать только 't', последнюю итерированную букву. Вы должны изменить его на «новый» и проверить, является ли он «h»

quote="Wheresoever you go, go with all your heart"
new= ''
for letter in quote:
    if letter.isalpha():
        new+= letter
    elif new.lower() >= 'h':
        print(new.upper())
        new= ''
    else:
        new= ''
if new.lower() >= 'h':
     print(new.upper())
...