Wyzwanie Python #2: Rozwiązanie

Maciej Bartoszuk 21 lutego 2023
 

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.

Maciej Bartoszuk

Ukończył z wyróżnieniem informatykę na wydziale Matematyki i Nauk Informacyjnych Politechniki Warszawskiej, gdzie aktualnie pracuje w zakładzie Sztucznej Inteligencji i Metod Obliczeniowych. Tam też od 2013 roku prowadzi zajęcia dydaktyczne z programowania w R, Pythonie, C/C++, C#. Uczestnik studiów doktoranckich w Instytucie Podstaw Informatyki Polskiej Akademii Nauk w latach 2013-2015. W 2018 roku obronił doktorat z wyróżnieniem na swoim rodzimym wydziale: System do oceny podobieństwa kodów źródłowych w językach funkcyjnych oparty na metodach uczenia maszynowego i agregacji danych, który obejmuje zarówno algorytmy przetwarzania kodów źródłowych programów, jak i data science. Współautor książki Przetwarzanie i analiza danych w języku Python wydanej przez PWN. Ponadto trener na bootcampach Data Science, gdzie uczy programować w języku Python pod kątem analizy danych.
Komentarze
Ostatnie posty
Data Science News #204
Data Science News #203
Data Science News #202
Data Science News #201