我是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
有人可以指出我的错误吗?任何帮助表示赞赏。
答案 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