Не распечатывать правильное письмо - 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
либо на новых строках, либо на пробелах (в зависимости от того, как ваш файл разделяет слова) и просматривайте итоговый список.