Мне кажется, что если уж беремся отвечать на такие школьные вопросы, то надо делать это так, что-бы задающий вопрос хоть какую бы то пользу из этого извлек, а так-же, что бы другие, читая этот вопрос находили бы тут хоть что-то не элементарно-тривиальное.
В частности, в этом вопросе первое, что бы я заметил, что ТС пишет
3.Деление\n"
потом под этим номером выполняет операцию
str(num1 // num2)
хотя в Python эта операция называется четко и неоднозначно:
"Целочисленное деление" и никак иначе. А
деление - это совсем другая операция.
Кроме того, ТС называет
a = str(num1 % num2)
операцией
f = 'деления с остатком'
хотя в Python эта операция называется
ОСТАТОК от деления
. Смысл, как видно совсем другой.
Во-вторых писать такие простыни кода и жестко "вшивать" данные в структуру операций if - это крайне неэффективная практика. А что будет если надо будет и другие операции реализовывать? Или даже просто поменять местами строчки в подсказке местами? Мало того, что придется менять данные, но еще и влазить в и изменять структуру "лесенки" условий и наверняка навносить туда ошибок.
При этом задача решается намного проще и код становиться намного яснее:
import operator
def do_something(n1,n2,func):
return(func(n1,n2))
again='y'
while again=='y':
num1 = int (input(' Введите первое число: '))
num2 = int (input(' Введите второе число: '))
dct={1:("Сложение",operator.add),
2:("Вычитание",operator.sub),
3:("Целочисленное деление",operator.floordiv),
4:("Умножение",operator.mul),
5:("Возвести в степень",operator.pow),
6:("Остаток от деления",operator.mod)
}
print(" Напиши, какую операцию ты хочешь сделать?\n")
for dc in dct:
print(str(dc)+'.',dct[dc][0])
v = int(input())
if v>len(dct):
print(" Вы выбрали не верный вариант\n")
print(" Начнем с начала?")
else:
print(dct[v][0],' :',do_something(num1,num2,dct[v][1]))
again=input(" Продолжим? Y/N: ").lower()
Всего то! И никакой простыни на пол сотни строк!
Хотите добавить еще операции? Добавляете ОДНУ строчку - один элемент в словарь dct и все остается работать. Никакого изменения кода.
А вот протокол работы этого скрипта:
Введите первое число: 10
Введите второе число: 4
Напиши, какую операцию ты хочешь сделать?
1. Сложение
2. Вычитание
3. Целочисленное деление
4. Умножение
5. Возвести в степень
6. Остаток от деления
1
Сложение : 14
Продолжим? Y/N: y
Введите первое число: 10
Введите второе число: 4
Напиши, какую операцию ты хочешь сделать?
1. Сложение
2. Вычитание
3. Целочисленное деление
4. Умножение
5. Возвести в степень
6. Остаток от деления
2
Вычитание : 6
Продолжим? Y/N: y
Введите первое число: 10
Введите второе число: 4
Напиши, какую операцию ты хочешь сделать?
1. Сложение
2. Вычитание
3. Целочисленное деление
4. Умножение
5. Возвести в степень
6. Остаток от деления
3
Целочисленное деление : 2
Продолжим? Y/N: Y
Введите первое число: 10
Введите второе число: 4
Напиши, какую операцию ты хочешь сделать?
1. Сложение
2. Вычитание
3. Целочисленное деление
4. Умножение
5. Возвести в степень
6. Остаток от деления
4
Умножение : 40
Продолжим? Y/N: y
Введите первое число: 10
Введите второе число: 4
Напиши, какую операцию ты хочешь сделать?
1. Сложение
2. Вычитание
3. Целочисленное деление
4. Умножение
5. Возвести в степень
6. Остаток от деления
5
Возвести в степень : 10000
Продолжим? Y/N: y
Введите первое число: 10
Введите второе число: 4
Напиши, какую операцию ты хочешь сделать?
1. Сложение
2. Вычитание
3. Целочисленное деление
4. Умножение
5. Возвести в степень
6. Остаток от деления
6
Остаток от деления : 2
Продолжим? Y/N: y
Введите первое число: 10
Введите второе число: 4
Напиши, какую операцию ты хочешь сделать?
1. Сложение
2. Вычитание
3. Целочисленное деление
4. Умножение
5. Возвести в степень
6. Остаток от деления
7
Вы выбрали не верный вариант
Начнем с начала?
Продолжим? Y/N: n