python - 字母出现计数器程序不保存用户输入的字符串
问题描述
我正在创建一个程序来计算用户输入的字符串中字母表中每个字母的出现次数。提示用户继续输入字符串,直到他们输入<end>
停止输入并分析输入。
分析工作得很好。例如,当我输入第一个输入“thanks”,然后输入第二个输入“please”时,就会出现问题。该程序只会分析“请”而不是“谢谢”。我不知道为什么。
programrun = True
while programrun:
stringinput = input ("Enter a sentence or word <END> to finish: ").lower()
if stringinput != "<end>":
stringinput1 = stringinput
letters =['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
#print (programrun)
if stringinput == "<end>":
programrun = False
#stringinput2 = stringinput1
print (stringinput1)
for i in range(0,26):
#frequency = (int(stringinput.count(letters[i]) / 26) * 100)
length = len(stringinput1)
print(letters[i],": ",stringinput1.count(letters[i]), " Freqency: ", (float(stringinput1.count(letters[i]) / length) * 100))
解决方案
问题是缩进,for
循环不在while
循环内,所以输入一个词后,代码停止,我添加了其他改进
- 您可以只使用带有字母的字符串而不是列表,并在循环之前定义它
- 直接遍历每个字母,而不是整数然后按索引访问
- 停止输入的代码
"<end>"
不做其他字符串操作
letters = 'abcdefghijklmnopqrstuvwxyz'
while True:
stringinput = input("Enter a sentence or word <END> to finish: ").lower()
if stringinput == "<end>":
break
for letter in letters:
length = len(stringinput)
count = stringinput.count(letter)
print(letter, ": ", count, " Freqency: ", (count / length) * 100)
推荐阅读
- c# - 应该使用什么设计模式连接到具有完全相同架构和父/主数据库的多个数据库实例之一?
- c# - 如何从 HTML 表中获取值到 ASP.net C# 代码?
- python - 如何在水平时间检查各个路口的车数?
- unity3d - 将动画 .svg 包含在统一中
- ruby-on-rails - Selenium webdriver 不适用于 docker-compose
- html - 有没有办法只使用引导程序的一部分?
- data-binding - 如何使用 knockoutjs 识别绑定到跨度的数据
- laravel - Laravel lighttpd home 404问题没有斜杠
- manim - 如何控制self.play在特定时间点运行
- python - 从 Python 的 Requests 模块获取登录 cookie