Python逐行输入转小写遇0终止程序代码报错排查求助
题目要求
编写程序逐行输入文本,将每行文本转换为小写后打印到屏幕,最后一行打印输入的总行数;当遇到内容仅为0的行时程序停止运行,要求使用无限循环搭配break语句实现。
问题描述
按照要求编写代码后,运行时出现「Input 9 is empty」报错,原代码如下:
a = 1 l = 0 while a != 0: a = input() a.lower() print(a) l+=1
题目给出的示例输入如下:
TbH Rn ngL bRb 0
问题排查
原代码存在3个核心错误:
- 循环实现不符合要求,且终止逻辑失效:题目明确要求使用无限循环搭配break实现停止逻辑,原代码使用
a != 0作为循环判断条件,而input()返回值为字符串类型,字符串和整数0做比较永远不会得到相等结果,循环不会在输入为'0'时停止,持续读取到空输入时就会触发报错。 - 小写转换逻辑无效:Python字符串为不可变类型,
a.lower()会返回转小写后的新字符串,不会修改原变量a的内容,直接打印a无法得到转小写后的结果。 - 计数与输出逻辑错误:原代码会把终止标识行(内容为0的行)计入总行数,也没有在循环结束后打印统计的总行数,不符合题目输出要求。
正确实现方案
按照题目要求的无限循环+break逻辑编写代码,修正转换、计数逻辑:
line_count = 0 while True: content = input() # 遇到仅为0的行直接终止循环 if content == '0': break # 转小写后打印 print(content.lower()) line_count += 1 # 循环结束后打印总行数 print(line_count)
对应给定的示例输入,运行后输出结果如下:
tbh rn ngl brb 4
完全匹配题目要求,不会触发空输入报错。
内容的提问来源于stack exchange,提问作者Meno
相关产品推荐
相关产品推荐

