python3读取多行输入出现EOF

python3 读取多行输入出现EOFError: EOF when reading a line
做的是牛客网到汽水瓶问题:

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?


输入描述:


输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。


输出描述:


对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。

示例1

输入

3 10 81 0

输出

1 5 40


我的代码如下:


lines = []

while True:
line = input()
if not line:
break
lines.append(line)


for i in range(10):
if eval(lines[i]) == 0:
lenLine = i
break


def MaxBottleNum(Num):
rest = (Num%3)
n = (Num//3)
New_Num = n + rest
while((New_Num)>=3):
n +=(New_Num//3)
rest1 = New_Num%3
New_Num = rest1 + (New_Num//3)
if New_Num == 2:
n += 1
return n

for i in range(lenLine):
num = int(lines[i])
print(MaxBottleNum(num))


然后提交运行:

您的代码已保存
返回非零:您的程序结束时返回值非 0,如果使用 C 或 C++ 语言要保证 int main 函数最终 return 0,如果是Javascript/Python等脚本语言请确认你的代码没有语法错误
case通过率为0.00%

测试用例:
Traceback (most recent call last):
File "a.py3", line 5, in
line = input()
EOFError: EOF when reading a line


我在自己的jupyter notebook 上跑是能够得到正确到输出的,但是一到系统上就不行了,原因在哪里呢? 谢谢


全部评论
根据Neyanbhbin以及变戏法的羊的解答,我最终将程序修改如下,并通过: import sys lines = [] for line in sys.stdin: a=int(line) if a!=0: lines.append(a) lenLine = len(lines) def MaxBottleNum(Num): rest = (Num%3) n = (Num//3) New_Num = n + rest while((New_Num)>=3): n +=(New_Num//3) rest1 = New_Num%3 New_Num = rest1 + (New_Num//3) if New_Num == 2: n += 1 return n for i in range(lenLine): num = lines[i] print(MaxBottleNum(num))
3 回复 分享
发布于 2017-08-03 10:19
改为:import sys for line in sys.stdin: a=int(line) if a!=0: lines.append(a)
点赞 回复 分享
发布于 2017-08-03 09:44
感谢Neyanbhbin的回答! 但是我还存在一个问题,当我把一个循环改为: while True: line = input() if line == '0': lines.append(line) break lines.append(line) 后运行,还是出现了错误: Traceback (most recent call last): File "a.py3", line 4, in line = input() EOFError: EOF when reading a line 请问这是怎么回事呢?  谢谢!
1 回复 分享
发布于 2017-08-02 23:52
由input()函数得到的输入是字符串类型的(str),所以停止的判断条件是 if n == '0': break 因为’0‘不是False。原程序会导致第一个while循环无法停止。
点赞 回复 分享
发布于 2017-08-02 22:31
input()在没有输入时会报异常,try..except:break 就行了
14 回复 分享
发布于 2019-04-10 15:38

相关推荐

05-12 10:10
已编辑
门头沟学院 人工智能
写这篇之前我犹豫了挺久。一方面是怕被人骂,&quot;又一个收割焦虑的转行帖&quot;;另一方面是看了太多用&nbsp;GPT&nbsp;套娃出来的「学习路线」文章,AI&nbsp;味重得让人没法读完。所以这篇全是亲身踩过的坑,时间线、用过的项目、当时的心路全都尽量原样写出来。如果你是大学生在迷茫要不要转&nbsp;AI,或者已经在转的路上,希望能给点参考。&nbsp;一个反共识的开场:你以为进&nbsp;OpenAI&nbsp;的人都是博士?&nbsp;先讲个故事,跟我没关系,但跟所有想转&nbsp;AI&nbsp;的人都有关系。&nbsp;OpenAI&nbsp;的&nbsp;Sora&nbsp;团队(就是搞文生视频那个)一共&nbsp;13&nbsp;个人。这里面有两个人特别有意思:&nbsp;Will&nbsp;DePue,密歇根大学计算机系,直接辍学了。17...
_hengheng:我也本,也算是做ai相关,我最开始感觉做ai工程师有多么多么困难,后来发现懂了原理后整体训练完全可以看成一个流程化的内容,开源方案太多了,大多基本都是按着模子在自家业务上做各种操作,就算是大厂的小部门也没那么多资源去训基模,反而更多的是像怎么把技术往业务方向靠近了,不过当前时代如果本科学历没那么好加上自己执行力不是特别强还真不建议走ai工程师这条路,可以试试其他ai的偏业务方向,不然校招不太好杀出来
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务