Не распечатывать правильное письмо - Python

Вопрос:

A- Напишите функцию с именем has_no_e, которая возвращает True, если в данном слове нет буквы "e".

B- Измените вашу предыдущую программу, чтобы печатать только те слова, которые не имеют "е", и вычислить процент слов в списке, не имеющих "е".

def main():
    file = input("Enter a file: ")
    file_output = open(file, 'r')
    output = (file_output.read())
    for line in output:
        word = line.strip()
        if len(word)>20:
            print (word)
    no_e = has_no_e(word)

    count = 0
    for line in output:
        word = line.strip()
        if has_no_e(word):
            count +=1
            print (word)
    percent = (count/1)*100 #Im still working on the percentage part
    print (percent)

def has_no_e(word):
    for char in word:
        if char in 'Ee':
            return False
        return True

Выход:

с

час

s

я

s

с

о

о

L

900,0

Проблема: Итак, моя проблема в том, что вместо того, чтобы печатать все слово, нужно печатать каждую букву (кроме е). Я пытаюсь заставить его напечатать все слово, если в нем нет буквы e. Например, мой файл сказал, что "сыр это круто". Я ожидал, что это выведет только "круто". Как бы я поступил так? Кроме того, для процента: Как я могу связать слово как одно вместо отдельных букв? Таким образом, для процента, который я мог сделать (считать /# слов) *100.

1 ответ

file_output.read() читает весь файл и возвращает его в виде строки. Так output это строка "cheese is good",

Вопрос for line in string:, Вы ожидаете, что это line="cheese", затем line="is", и наконец line="good",

Тем не менее, вместо этого идет символ за символом. Таким образом, он запускает петли с line='c'затем с line='h' и так далее. Чтобы он работал так, как вы ожидаете, вам нужно разделить output либо на новых строках, либо на пробелах (в зависимости от того, как ваш файл разделяет слова) и просматривайте итоговый список.

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