• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program kalkulator - nauka Pythona

VPS Starter Arubacloud
+1 głos
291 wizyt
pytanie zadane 23 kwietnia 2023 w Python przez Klawesyn Nowicjusz (130 p.)

Cześć,

od niedawna zainteresowałem się nauką programowania i dowiedziałem się że najlepszy na początek będzie Python,

pooglądałem trochę filmów na youtube i zamówiłem książki.

Wymyśliłem sobie że napiszę samodzielnie prosty program i wybór padł na kalkulator.

Chciałbym go napisać ze znanych mi komend a jest ich nie wiele i wydaje mi się że to może zadziałać ale potrzebuje pomocy bo program nie odpowiada tak jakbym tego chciał.

Nie rozumiem jak sprawić by po naciśnięciu "n" program ponowił pytanie a po naciśnięciu "t" poszedł dalej

Teraz nie ważne co wpiszę pojawia się "nie to nie".

W przypadku wyboru działania jest podobnie więc domyślam się że może chodzić o ten sam błąd który popełniam.

Wiem że kalkulator można w Pythonie zrobić dużo prościej i szybciej ale zależy mi żeby napisać to na piechotę i takimi najprostszymi metodami bo w mojej opinii nauczę się najwięcej.

Czy mógłby mi ktoś pomóc? Używałem komendy "While"(z której też chciałbym skorzystać) ale problemy były podobne.

czy = "t"
kur = "n"
input("Oto program do liczenia, chcesz coś policzyć ? (t/n)")
if kur == "n":
    print("nie to nie")
elif czy == "t":
    a = int(input("Podaj liczbę: "))
    b = int(input("Podaj drugą liczbę: "))
    d = "d"
    o = "o"
    p = "p"
    w = "w"
    input("Co chcesz zrobić? Dodać (d) odjąć (o) Pomnożyć (p) Podzielić (w)")
    if d == "d":
        wynik = (a + b)
    elif o == "o":
        wynik = (a - b)
    elif p == "p":
        wynik = (a * b)
    elif w == "w":
        wynik = (a / b)
    else:
        print("coś poszło nie tak, spróbujmy jeszczę raz")
    print(wynik)

 

2 odpowiedzi

0 głosów
odpowiedź 23 kwietnia 2023 przez adrian17 Ekspert (344,100 p.)
kur = "n"
if kur == "n":

Z definicji, `kur` jest zawsze równe tekstowi "n".

Wygląda na to że zapomniałeś że input() zwraca tekst który musisz przypisać do zmiennej, to nie dzieje się "magicznie".

To samo tutaj :)

 

    d = "d"
    o = "o"
    p = "p"
    w = "w"
    input("Co chcesz zrobić? Dodać (d) odjąć (o) Pomnożyć (p) Podzielić (w)")

 

komentarz 23 kwietnia 2023 przez Klawesyn Nowicjusz (130 p.)
Rozumiem to tak że określiłem dwie zmienne, potem potem zapytałem o te zmienne a potem określiłem co się dzieje w przypadku jednej i drugiej.

Wiem że czegoś nie rozumiem ale nie wiem czego.
komentarz 23 kwietnia 2023 przez adrian17 Ekspert (344,100 p.)

potem potem zapytałem o te zmienne

No, nie, nie "zapytałeś o żadne zmienne".

Funkcją input() poprosiłeś usera o tekst i nic z nim nie zrobiłeś. Ten kod nic nie wie że to wejście ma jakikolwiek związek ze zmiennymi "czy" i "kur'.

0 głosów
odpowiedź 23 kwietnia 2023 przez VBService Ekspert (251,170 p.)
edycja 24 kwietnia 2023 przez VBService

Sprawdź dokładnie jak działa funkcja input

wtedy masz zapis np.

kur = input("Oto program do liczenia, chcesz coś policzyć ? (t/n)")
if kur == "n":
    print("nie to nie")
elif kur == "t":
    ...

lub

kur = input("Oto program do liczenia, chcesz coś policzyć ? (t/n)")
if not kur == "t": # czyli każdy inny klawisz inny od "t" jest niejako traktowany jako "n"
    print("nie to nie")
elif kur == "t":
    ...

lub

kur = input("Oto program do liczenia, chcesz coś policzyć ? (t/n)")
if kur == "t":
    ...
else:  # czyli każdy inny klawisz inny od "t" jest niejako traktowany jako "n"
    print("nie to nie")

 

komentarz 24 kwietnia 2023 przez Klawesyn Nowicjusz (130 p.)
edycja 24 kwietnia 2023 przez Klawesyn
git = -1
while (git != 0):
    wynik = input("Oto program do liczenia, chcesz coś policzyć ? (t/n)")
    if wynik == "n":
        print("nie to nie")
    elif wynik == "t":
        a = int(input("Podaj liczbę: "))
        b = int(input("Podaj drugą liczbę: "))
        razem = input("Co chcesz zrobić? Dodać (d) odjąć (o) Pomnożyć (p) Podzielić (w)")
        if razem == "d":
            wyn = (a + b)
        elif razem == "o":
            wyn = (a - b)
        elif razem == "p":
            wyn = (a * b)
        elif razem == "w":
            wyn = (a / b)
        else:
            print("coś poszło nie tak, spróbujmy jeszczę raz")
     elif wynik != "t" or "n": 
            print ("Do wyboru jest T i N")
        print(wyn)


Zrozumiałem już chyba że musiałem przypisać zmienną do wyboru użytkownika, i wtedy nie ważne co wpisze użytkownik to staje się to automatycznie wartością zmiennej i dopiero potem we warunkach mogę tworzyć do woli konkretne warianty. Chwilę mi to zajęło ale chyba przyswoiłem zasadę

Mógłby mi ktoś wytłumaczyć dlaczego na początku pętli muszę mieć zmienną z kosmosu która (dla mnie na ten moment nic nie robi), potem kolejną zmienną różną od tej pierwszej (która też nic nie robi) żeby to działało?

komentarz 24 kwietnia 2023 przez VBService Ekspert (251,170 p.)
edycja 24 kwietnia 2023 przez VBService

Bo pętla while dział dopóki spełniony jest warunek w nawiasie

while (git != 0):

czyli pętla wykonuje się dopóki zmienna git ma wartość inną niż równą 0 (zero)

w tym przypadku "różną od zera" !=

czyli

git = -1

spełnia warunek posiadania wartości innej od 0.

 

Sprawdź taki zapis

[ on-line ]

while (True):
    wybor = input("Oto program do liczenia, chcesz coś policzyć ? (t/n)")
    if wybor == "n":
        print("nie to nie")
        break
    elif wybor == "t":
        wynik = 0
        a = int(input("Podaj liczbę: "))
        b = int(input("Podaj drugą liczbę: "))
        razem = input("Co chcesz zrobić? Dodać (d) odjąć (o) Pomnożyć (p) Podzielić (w)")
        if razem == "d":
            wynik = (a + b)
        elif razem == "o":
            wynik = (a - b)
        elif razem == "p":
            wynik = (a * b)
        elif razem == "w":
            wynik = (a / b)
        else:
            print("coś poszło nie tak, spróbujmy jeszczę raz")
        if not wynik == 0:
            print(wynik)
    elif not wybor in ["t", "n"]: 
        print ("Do wyboru jest T i N")

 

Podobne pytania

+5 głosów
3 odpowiedzi 2,474 wizyt
–1 głos
0 odpowiedzi 145 wizyt
0 głosów
1 odpowiedź 280 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...