while reset == 't' or 'T':
...
zastąp tym:
TRUE_OPTIONS = ['T', 't']
while reset in TRUE_OPTIONS:
...
albo po prostu
while reset in ['T', 't']:
...
Zmienną reset na samej górze powinieneś zastąpić:
reset = 'T'
bo ją i tak później nadpisujesz.
I teraz tak. Stwórz sobie następujący słownik w którym odpowiednim wyborkom przypisujesz funkcję, którą chcesz wykonać:
operations = {
'*': mnozenie,
'+': dodawanie,
'-': odejmowanie',
'/': dzielenie
}
Następnie możesz skrócić te wszystkie warunki w taki sposób:
wyborek = wybory_menu()
operation = operations[wyborek]
print(f"{liczba1} {wyborek} {liczba2} == {operation(liczba1, liczba2)}")
Niby tracisz trochę informacji, które miałeś w tym wyświetlanym tekście w princie, ale z drugiej strony funkcje mnozenie, dodawanie, odejmowanie i dzielenie mogą też zwracać tuplę i jako pierwszy element tupli mogą zwracać wynik wynik, a jako drugi jakiś opis np.
def dodawanie(liczba1,liczba2):
return int(liczba1) + int(liczba2), "Dodawanie"
Wtedy, żeby wyciągnąć jedno i drugie robisz:
result, description = operation[wyborek](liczba1, liczba2)
print(f"{description}: {liczba1} {wyborek} {liczba2} == {result}")
Możesz też użyć pola __name__
, żeby zorientować się jaka funkcja jest pod spodem, np.:
operation = operations[wyborek]
print(f"{operation.__name__}: {liczba1} {wyborek} {liczba2} == {operation(liczba1, liczba2)}")
Edit:
I przestań używać break
i continue
. Zastanów się jak przepisać ten kod w taki sposób, żeby ich nie było w kodzie. Używanie break to jest bardzo zła praktyka. Używaj return wartosc_do_zwrocenia
, żeby wyskoczyć z pętli/funkcji. Jeżeli nie jesteś w funkcji to najwidoczniej musisz opakować swój kod w funkcję.