Wyzwanie Python #2: Rozwiązanie

Maciej Bartoszuk 18 grudnia 2018
 

Poniżej rozwiązanie do naszego drugiego wyzwania

W tym zadaniu wybraliśmy pętlę while, ponieważ nie wiemy z góry, ile razy obliczenia będzie chciał przeprowadzić użytkownik (ani nie da się tego w żaden sposób przewidzieć czy matematycznie obliczyć). Musimy tutaj wykonać pierwszą iterację pętli, gdyż wiemy, że użytkownik będzie chciał przynajmniej raz dokonać obliczeń. Dlatego ustalamy zmienną logiczną koniec, która na początku przyjmuje taką wartość, aby wejść do pętli. Dopiero na końcu pętli pytamy użytkownika o to, czy chce liczyć dalej i ewentualnie zmieniamy wartość tej zmiennej, aby warunek pętli był fałszywy i w związku z tym zakończyć jej działanie.

Warto zauważyć, że staramy się obsłużyć nietypowe sytuacje: co, gdy użytkownik poda inną operację, niż jedną z pięciu, które obsługujemy? Co, gdy napisze coś innego, niż n lub t? My wybraliśmy podejście informujące o otrzymaniu niepoprawnych danych i przerwaniu działania programu poprzez break (wyskakujemy z pętli, a za pętlą już nic nie ma). Innym podejściem byłoby napisanie pętli, która prosi o podanie poprawnych danych tak długo, aż się na nie doczeka.

def main():

    koniec = False
    while not koniec:
        print("Podaj w oddzielnych wierszach liczbę, operację matematyczną: +,-,*,/,%, a następnie kolejną liczbę:")
        liczba1 = float(input())
        operacja = input()
        liczba2 = float(input())

        if operacja == "+":
            wynik = liczba1 + liczba2
        elif operacja == "-":
            wynik = liczba1 - liczba2
        elif operacja == "*":
            wynik = liczba1 * liczba2
        elif operacja == "/":
            wynik = liczba1 / liczba2
        elif operacja == "%":
            wynik = liczba1 % liczba2
        else:
            print("Niepoprawna operacja")
            break

        print("Twój wynik to: " + str(wynik))
        print("Chcesz wykonać kolejne działanie? Wpisz literę t lub n")

        kolejne = input()
        if kolejne == "n":
            koniec = True
        elif kolejne != "t":
            print("Niepoprawny wybór")
            break


if __name__ == "__main__":
    main()

Jeśli macie więcej pytań lub problemów, piszcie do nas śmiało na Facebooku, chętnie pomożemy. :) Do zobaczenia w czwartek na kolejnym wyzwaniu!

Komentarze