После вывода ответа, прибавить/вычесть из него новое число
Есть вот такой код, мне нужно чтобы после вывода ответа, я мог прибавить/вычесть из него новое число.
Возможно ли такое сделать?
while True:
try:
num = input('>> ')
if "+" in num:
num = [int(n) for n in num.split("+")]
x = int(num[0])
y = int(num[1])
otv=x+y
print('>>',otv)
elif "-" in num:
num = [int(n) for n in num.split("-")]
x = int(num[0])
y = int(num[1])
otv=x-y
print('>>',otv)
else:
print('Введите больше данных')
except ValueError:
print("ERROR : Введите числа")
Ответы (4 шт):
Автор решения: Zhihar
→ Ссылка
можно в самом начале выше while инициировать переменную otv:
otv = 0
а дальше делать так:
otv += x+y
или
otv += x-y
P.S.
а зачем вы x и у переводите в целые числа, если вы их выше в списке уже перевели в целые числа?
otv = 0
while True:
try:
num = input('>> ')
if "+" in num:
num = [int(n) for n in num.split("+")]
otv+=x+y
print('>>',otv)
elif "-" in num:
num = [int(n) for n in num.split("-")]
otv+=x-y
print('>>',otv)
else:
print('Введите больше данных')
except ValueError:
print("ERROR : Введите числа")
P.P.S.
кстати код
num = [int(n) for n in num.split("+")]
можно также сделать по другому:
num = list(map(int, num.split("+")))
или
num = [*map(int, num.split("+"))]
чуть более короткая запись
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
z = 0
while True:
try:
num = input('>> ')
if not num:
break
if "+" in num:
num = [int(n) if n else 0 for n in num.split("+")]
x = int(num[0])
y = int(num[1])
otv = z + x + y
print('>>',otv)
elif "-" in num:
num = [int(n) if n else 0 for n in num.split("-")]
x = int(num[0])
y = int(num[1])
otv = z + x - y
print('>>', otv)
else:
print('Введите больше данных')
otv = 0
z = otv
except ValueError:
print("ERROR : Введите числа")
Автор решения: SergFSM
→ Ссылка
Как вариант можно вместо метода split использовать partition. Он возвращает кортеж из трех строк:
otv = 0
while True:
try:
num = input('>> ')
if not num: break
if "+" in num:
x,_,y = num.partition('+')
otv += (int(x or 0) + int(y))
elif "-" in num:
x,_,y = num.partition('-')
otv += (int(x or 0) - int(y))
else:
print('Введите больше данных')
print('итог: ', otv)
except ValueError:
print("ERROR : Введите числа")
UPD
чтобы избавиться от повторения кода (DRY!) можно переписать его так:
otv = 0
while True:
try:
num = input('>> ')
if not num: break
for i in '+-':
if i in num:
x,o,y = num.partition(i)
otv += (int(x or 0) + int(o+y))
print('итог: ', otv)
break
else: print('Введите больше данных')
except ValueError:
print("ERROR : Введите числа")
Автор решения: ПИТОНИСТ версия-3-8
→ Ссылка
Попробуйте так:
ch=0
while True:
print(f'Сейчас число равно {ch}')
num=input('>>> ')
try:
if '+' in num: ch+=int(num.split('+')[1])
elif '-' in num: ch-=int(num.split('-')[1])
else: print('Введите хоть какой-то знак!')
except:
print('ERROR: вы ввели что-то не то!')

