Python文件元音计数程序异常求助:预期结果与实际不符
问题排查与修复
你的代码核心问题是循环条件逻辑错误:
初始时ch被赋值为空字符串"",空字符串在布尔判断中会被视为False,导致while ch:循环根本不会执行,自然无法统计任何字符,最终输出0而非预期的6。
修复方案1:调整循环执行顺序
先读取第一个字符,再进入循环判断,读完当前字符后读取下一个:
myfile = open("student.txt","r") vcount = 0 ch = myfile.read(1) # 先读取第一个字符 while ch: if ch in {"a","A","e","E","i","I","o","O","u","U"}: vcount +=1 ch = myfile.read(1) # 读取下一个字符 myfile.close() # 手动关闭文件 print(vcount)
修复方案2:更简洁的文件读取方式
使用with语句自动管理文件(无需手动关闭),直接读取全部内容后遍历统计:
vcount = 0 vowels = {"a", "A", "e", "E", "i", "I", "o", "O", "u", "U"} with open("student.txt", "r") as myfile: for ch in myfile.read(): if ch in vowels: vcount +=1 print(vcount)
两种方案都能正确统计出Ethan,Jordan,Kevin中的6个元音(E、a、o、a、e、i)。
内容的提问来源于stack exchange,提问作者stackoverflow69696969696969
相关产品推荐
相关产品推荐

