如果改成遇到EOF结束循环呢
时间: 2024-10-24 21:14:00 浏览: 21
如果你想让程序在遇到文件结束符(通常表示用户已无更多输入)时自动结束循环,而不是等待空行,可以在`try`块内检查`sys.stdin.readline()`是否返回空字符串。当读到空字符串时,说明输入已经到达文件结尾,这时可以跳出循环。下面是修改后的`main`函数:
```python
import sys
def main():
while True:
try:
# 从标准输入逐行读取数据
line = sys.stdin.readline().strip()
if not line: # 如果读到的是空行(EOF),认为输入结束
break
# 解析输入数据...
N, M, K = map(int, line.split())
positions = []
for _ in range(K):
X, Y = map(int, sys.stdin.readline().split())
X -= 1
Y -= 1
positions.append((X, Y))
important_points, Chessmen = find_important_blanks(positions, N, M)
print(f"Board have {important_points} important blanks for {Chessmen} chessmen.")
except EOFError:
pass # 程序正常结束,无需额外处理
except ValueError:
print("Invalid input format. Please enter integers separated by spaces.")
if __name__ == "__main__":
main()
```
在这个修改版中,每次循环都会先尝试从标准输入读一行,如果读到空行(EOF),就会直接跳出循环。如果读取失败(例如,非数字输入),仍然会捕获`ValueError`并给出相应的错误提示。
阅读全文