Помогите найти ошибку в калькуляторе

Yarik

Новичок
Пользователь
Май 21, 2020
3
0
1
Здравствуйте ребята, я учусь програмированию по книге “ A byte of Python “
Почитал, побробовал, и решил сделать калькулятор, и вот такая проблема,
Он просто строчит ответом вниз
2
2
2
2
2
И до бесконечности
Версия Python 2.7
Код:
# -*- coding: utf-8 -*-

print('+ сложение\n- вычитание\n/ деление\n* умножение\n** возведение в степень ')
what = raw_input(''' (+ , -, / , *, **, ) send your choice: ''')

a = float(raw_input('введите число: '))

b = float(raw_input('введите число: '))
running = True
while running:
    if what == "+":
        c = a + b
        
        print(c)
    
    elif what == "-":
        c = a - b
        
        print(c)
    
    elif what == "/":
        c = a / b
        
        print(c)
    
    elif what == "*":
        
        c = a * b
        
        print(c)
    
    elif what == "**":
        c = a ** b
        
        print(c)
    
    else:
        print( " неверное значение " )
        running = False
        
        
        
print("konec")
 

Ashe Knight

Новичок
Пользователь
Май 20, 2020
4
2
3
Обрати внимание на то, где ты принимаешь значение False для running
Должно быть:
Код:
running = True
while running:
    if what == "+":
        c = a + b
        print(c)

    elif what == "-":
        c = a - b
        print(c)

    elif what == "/":
        c = a / b
        print(c)

    elif what == "*":
        c = a * b
        print(c)

    elif what == "**":
        c = a ** b
        print(c)

    else:
        print(" неверное значение ")

    running = False
 
Последнее редактирование:

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
дополнение от Ashe Knight абсолютно верное, только так вы волните код 1 раз, соответственно сымсл цикла теряется, если нужно повторять ввод и вывод, то нужно поместить эти команды в тело цикла, можно так например, при вводе слова stop цикл будет заверщён
Python:
print('+ сложение\n- вычитание\n/ деление\n* умножение\n** возведение в степень ')

while True:
    what = (input('(+ , -, / , *, **, stop) send your choice:'))
    if what == 'stop':
        break

    a = float(input('введите число: '))

    b = float(input('введите число: '))

    if what == "+":
        c = a + b

    elif what == "-":
        c = a - b

    elif what == "/":
        c = a / b if b != 0 else print('делить на ноль нельзя')

    elif what == "*":

        c = a * b

    elif what == "**":
        c = a ** b

    else:
        print(" неверное значение ")
        break

    print(c)
 

Форум IT Специалистов