如何让逐行读取输入的程序仅在遇到独立句号时终止
问题描述
需要实现一个逐行读取输入的程序,规则是:当遇到**仅包含句号(前后的空格不影响)**的行时,程序立即终止。
举个输入例子:
HI bye .
程序读到第三行(带空格的句号行)时就该停止。
试过两种判断逻辑,但都有问题:
- 第一种写法:
if line == ".": break—— 没考虑行前后带空格的情况,会漏掉终止条件 - 第二种写法:
if "." in line: break—— 会误判带句号的其他内容(比如"2.1"这种数字行)
解决方案
核心思路是先去掉行首尾的所有空白字符,再判断是否等于句号。具体代码如下:
while True: line = input() # 去掉行首行尾的空格、制表符等空白字符 stripped_line = line.strip() if stripped_line == ".": break # 这里写处理正常行的逻辑 print(stripped_line) # 示例:输出处理后的行
为什么这个写法可行?
strip()会移除字符串首尾的所有空白字符(包括空格、制表符、换行符),不管原行前后有多少空格,只要本质是仅含句号的行,处理后就会变成".",触发终止条件。- 对于"2.1"、"hello.world"这类包含句号但还有其他内容的行,
strip()后结果不是".",不会误判终止。
内容的提问来源于stack exchange,提问作者mochiwei
相关产品推荐
相关产品推荐

