Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python Подсчет в тексте букв, символов и.т.д.

Наталия Москаленко Знаток (292), на голосовании 2 года назад
Написала код на Python ну он не совсем коректно работает просьба слегка подправить код.

Само задание:

Создайте текст на английском языке. Программа должна подсчитать:
1) общее количество символов текста,
2) общее количество букв,
3) общее количество остальных (кроме букв) символов.
Кроме того, программа должна подсчитать, сколько раз в тексте
встречается каждая буква (безотносительно к регистру, естественно).
Результаты вывести в текстовый файл, оформить красиво:
чтобы было понятно, что есть что.

Указание: Счётчики должны быть независимыми. Т.е. показания одного счётчика
не может быть вычислено через показания другого.


Вот код

str1 = "I really like to sleep".lower()
list = []
all_num = 0
letters = 0
any_num = 0
for letter in str1:
all_num += 1
if letter.isalpha():
letters += 1
list.append(letter)
else:
any_num += 1
with open("cout.txt","w",encoding="utf-8") as f1:
f1.write("Вы ввели: " + str1 +"\n")
f1.write("Все символы: " + str(all_num) + "\n")
f1.write("Все буквы: " + str(letters) + "\n")
f1.write("Другие символы: " + str(any_num) + "\n")
f1.write("Кол-во встречающихся символов в строке: " + "\n")
n = 0
for letter in str1:
for symbol in list:
if(letter == symbol):
n += 1
if letter != " ":
f1.write(letter + ":" + str(n) + "\n")
n = 0



ну при подсчете отдельно (сколько раз встречается каждая буква) он дублирует ее несколько раз хотя должен выводить только 1 раз и количество данной буквы в тексте, так же при добавление в текст " ! ? , + -" он тоже подсчитывает данные символы хотя должен считать только количество букв.

Просьба дописать код под данные условия. В фото
Голосование за лучший ответ
Vitness Просветленный (35220) 2 года назад
Вместо последнего цикла с подсчетом:

for letter in set(str1):
____if letter.isalpha():
________f1.write(f"{letter}: {str1.count(letter)}\n")
Наталия МоскаленкоЗнаток (292) 2 года назад
Не совсем поняла вместо чего?
Как это должно выглядеть
for letter in str1:

for letter in set(str1):
____if letter.isalpha():
________f1.write(f" { letter } : { str1.count(letter) } \n")
if(letter == symbol):
n += 1
if letter != " ":
f1.write(letter + ":" + str(n) + "\n")
n = 0
Vitness Просветленный (35220) Наталия Москаленко, не, в плане только это (нижнее подчеркивание - это пробелы, их мейл стирает, приходится подменять) вместо этого n = 0 for letter in str1: for symbol in list: if(letter == symbol): n += 1 if letter != " ": f1.write(letter + ":" + str(n) + "\n") n = 0
Наталия МоскаленкоЗнаток (292) 2 года назад
Спасибо большое :> (про пробелы знаю просто не поняла после какого из циклов, в общем работает
Похожие вопросы