使用python中的循环填充空数组

时间:2018-09-27 23:36:54

标签: python arrays list

我是python的新手,我被要求使用3输入int,int,str创建一个基本的计算器。输入和输出应如下所示:
输入
1 2添加
4100 MUL
5 2 DIV
100 10 SUB

输出
3
400
2
90

这就是我想要做的:

angk1, angk2, ope = input().split(" ")
angk1, angk2, ope = [int(angk1),int(angk2),str(ope)]
hasil = []
i = hasil
L = 0
while True:
    for L in range(1, 500):
        if ope=='ADD':
            hasil[L] = (angk1+angk2)
        elif ope=='MUL':
            hasil[L] = (angk1*angk2)
        elif ope=='DIV':
            hasil[L] = (angk1/angk2)
        elif ope=='SUB':
            hasil[L] = (angk1-angk2)
    L += 1
    i.extend(hasil)
    if input()=='STOP':
        break
print i
print 'Done'

结果是:

'123 123 ADD'
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    hasil[L] = (angk1+angk2)
IndexError: list assignment index out of range

有人可以指出我的错误吗?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

尝试建立列表,如:

 if ope=='ADD':
        x = (angk1+angk2)
        hasil.append(x)

您可能想打印L的值,看来它可能不是您想要的基于循环结构的值。

答案 1 :(得分:0)

我已经整理了一下您的程序。我在开头添加了一条消息print('Type number number OPERATOR to perform operation. Type STOP to end program.'),以指导读者。另外,我取出了for循环(您有一个for循环和while循环,这是多余的。另外,由于要从一个空列表开始,因此在添加到列表中时需要使用append,因此传递索引将抛出错误。

hasil = []
print('Type number number OPERATOR to perform operation. Type STOP to end program.')
while True:
    inp = input()
    if inp == 'STOP':
        break
    angk1, angk2, ope = inp.split(" ")
    angk1, angk2, ope = [int(angk1),int(angk2),str(ope)]
    if ope=='ADD':
        hasil.append(angk1+angk2)
    elif ope=='MUL':
        hasil.append(angk1*angk2)
    elif ope=='DIV':
        hasil.append(angk1/angk2)
    elif ope=='SUB':
        hasil.append(angk1-angk2)
for i in hasil:
    print(i)
print('Done')

输入:

1 2 ADD    
4 100 MUL    
5 2 DIV
100 10 SUB

输出:

3
400
2.5
90
Done