我意识到这可能很容易,我想在Python中使用相当于这个C代码:
#include <stdio.h>
#include <string.h>
#define BUFFER 200
int main()
{
char buffer[BUFFER];
while (fgets(buffer, BUFFER, stdin))
{
if (strstr(buffer, "BEER"))
printf("Drink up!\n");
}
return 0;
}
我在网上搜索,但我认为我的大脑已被炒了。
答案 0 :(得分:2)
Pythonic要做的事情有点不同:
import fileinput
for line in fileinput.input():
if "BEER" in line:
print("Drink up!")
但是这会导致你的C代码没有做很多事情,比如允许用户传递文件名参数来代替stdin作为参数等等。
这是您的代码的更直接映射:
try:
while True:
buffer = input() # or raw_input, for 2.x
if "BEER" in buffer:
print("Drink up!")
except EOFError:
pass
但是,缺少前200个字符中包含"BEER"
的300多个字符行的行,然后在下一个字符中再次打印两行的部分,或者缺少300个字符的行“BEER”的部分“从第198位开始根本不打印它。
如果这是一个问题,你可能想要这样的东西:
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!")
答案 1 :(得分:1)
查看raw_input
从stdin获取用户输入,print
将其打印到stdout:
http://docs.python.org/2/library/functions.html#raw_input http://docs.python.org/2/library/functions.html#print
答案 2 :(得分:1)
这样做的等效方式,虽然不完全相同
for line in iter(raw_input, ''):
if 'BEER' in line:
print('Drink up!')
foo
bar
aBEERc
Drink up!
***blank line***