Korzystamy z plików cookies, by móc jak najlepiej dostosować stronę do Twoich potrzeb oraz wyświetlać Ci przydatne i adekwatnych dla Ciebie reklamy w serwisie i poza nim. Możesz kontrolować ustawienia ciasteczek w ustawieniach plików cookies. Odwiedzając tę stronę, wyrażasz zgodę na wykorzystywanie przez nas plików cookies. Więcej.

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!

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