заполнить пустой массив с помощью цикла в Python - PullRequest
0 голосов
/ 28 сентября 2018

Я новичок в Python, и меня попросили сделать базовый калькулятор, используя 3 ввода int, int, str.вход и выход должны быть такими:
INPUT
1 2 ADD
4 100 MUL
5 2 DIV
100 10 SUB

OUTPUT
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 голосов
/ 28 сентября 2018

Я немного очистил вашу программу.Я добавил сообщение 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
0 голосов
/ 28 сентября 2018

попробуйте построить список следующим образом:

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

, и вы можете напечатать значение L, похоже, оно не соответствует тому, что вы намереваетесь основывать на структуре цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...