Pythonic 的做法有点不同:
import fileinput
for line in fileinput.input():
if "BEER" in line:
print("Drink up!")
但这做了很多你的 C 代码没有做的事情,比如允许用户传递文件名参数以代替标准输入作为参数读取,等等。
这是您的代码的更直接映射:
try:
while True:
buffer = input() # or raw_input, for 2.x
if "BEER" in buffer:
print("Drink up!")
except EOFError:
pass
但是,它缺少包含前 200 个字符的超过 300 个字符的行,"BEER"然后在下一个字符中再次打印两次的部分,或者从位置 198 开始具有“BEER”的 300 个字符的行不会打印出来。
如果这是一个问题,你可能想要这样的东西:
import sys
while True:
buffer = sys.stdin.readlines(200)
if not buffer:
break
for line in buffer:
for i in range(0, len(buffer), 200):
if "BEER" in buffer[i*200:i*200+200]:
print("Drink up!")