为什么我的程序跳到最后一行输入? (Python 3)

时间:2017-04-21 00:44:17

标签: python

我正在尝试以此输入形式获取数据:

5 
+ 3
* 7
+ 10
* 2
% 11

并按顺序执行操作(以5作为初始整数值开始),最后得出最终值。这是我现在的代码,我无法弄清楚为什么它会跳到最后。我已经注释掉了某些部分,试图找到问题的根源,所以不要担心这些:

initValue = int(input())
while input() != '':
    if '+' in input():
        lineList = input().split()
        print(lineList)
        #initValue = initValue + int(lineList[1])
        #print(initValue)
    elif '*' in input():
        lineList = input().split()
        print(lineList)
        #initValue = initValue * int(lineList[1])
        #print(initValue)
    elif '%' in input():
        lineList = input().split()
        print(lineList)

我的输入/输出如下所示:

5
+ 3
* 7
+ 10
* 2
* 3
+ 1
% 11
['%', '11']

我仍然只是从python开始,很抱歉,如果我犯了一个非常愚蠢的错误。

1 个答案:

答案 0 :(得分:2)

每次调用函数input()时,它都会读取整行的下一行并返回它。如果你使用调用提示参数(就像你应该的那样),你会知道究竟发生了什么。

因此,您的第一个int(input())读取5。下一个(在while循环标题中)读取+ 3并丢弃它,因为您从不保存返回的值。 input语句中的下一个if '+'会读取* 7并再次丢弃它,等等。

你需要的是在循环中对input()进行一次调用,将返回值赋给变量,并对该变量执行所有检查。