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

question-closed Python warunek w ifie

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
294 wizyt
pytanie zadane 16 kwietnia 2022 w Python przez niezalogowany
zamknięte 16 kwietnia 2022
import random
def gra():

    my_number = random.randint(0, 100)
    guess = -1
    print("Guess my nmebr")


    while guess != my_number:
        guess = int(input("Wprowadż liczbę"))
        if guess != my_number:
            o = input("Podałeś nieprawidłóową liiczbę poddajes zs ę> napisz tak lub nie")
      
        if o == 'Tak' or 'TAK' or 'tak' or 'tAk' or 'taK' or 'TaK':
            print("Wylosowana liczba to", my_number)
            break
        if o == 'Nie' or 'NIE' or 'NiE' or 'nie' or 'NIe' or 'nIE':
            
            print("okej")
        return

gra()

ok = input("Chcesz grać dalej?")
while ok == 'Tak' or 'tak':
    gra()


print("Okej")

 

Nie wiem dlaczego warunek w ifie w którym jest instrukcja print("Wylosowana liczba to", my_number) się spełnia kiedy w zmienna o jest 'Nie'

Przecież Nie nie jest równe Tak.

komentarz zamknięcia: rozwiązanie

1 odpowiedź

0 głosów
odpowiedź 16 kwietnia 2022 przez adrian17 Mentor (350,440 p.)
if o == 'Tak' or 'TAK' or 'tak' or 'tAk' or 'taK' or 'TaK':

Pomieszałeś kolejność wykonywania działań - `or` rozdziela wyrażenia logiczne. Więc to nie oznacza "czy o jest tekstem 'Tak' czy tekstem 'TAK'" tylko jednym warunkiem jest "czy o jest tekstem 'Tak'", drugim warunkiem jest 'TAK', trzecim warunkiem jest 'tak'... co oczywiście jest błędne. Warunek który jest niepustym tekstem jest zawsze prawdziwy.

Powinieneś albo (w kolejności od prostych poprawek do coraz bardziej idiomatycznego kodu):

- poprawić linię żeby każde wyrażenie po każdej stronie 'or' było osobnym porównaniem z ==,

- zastąpić ciąg 6 porównań z jednym sprawdzeniem czy tekst jest w liście ['Tak', 'TAK', 'tak' etc],

- po prostu zamienić tekst wejściowy na małe litery - wtedy wystarczy jedno porównanie z 'tak'.

komentarz 16 kwietnia 2022 przez niezalogowany

zmodyfikowałem kod i nadal nie działa tak jak powinien

import random
tak = ['tak','TAK','TaK','tAK','tAk','taK']
nie = ['Nie','NIE','NiE','nie','NIe','nIE']
def gra():
    tak = ['tak','TAK','TaK','tAK','tAk','taK']
    nie = ['Nie','NIE','NiE','nie','NIe','nIE']
    my_number = random.randint(0, 100)
    guess = -1
    print("Guess my nmebr")


    while guess != my_number:
        guess = int(input("Wprowadż liczbę"))
        if guess != my_number:
            o = input("Podałeś nieprawidłóową liiczbę poddajes zs ę> napisz tak lub nie")
      
        if o == tak:
            print("Wylosowana liczba to", my_number)
            break
        if o == nie:
            print("okej")
        return

gra()
ok = input("Chcesz grać dalej?")
while ok == taks:

    gra()


print("Okej")

 

Podobne pytania

0 głosów
2 odpowiedzi 453 wizyt
pytanie zadane 27 lutego 2023 w Python przez niezalogowany
0 głosów
1 odpowiedź 812 wizyt
0 głosów
5 odpowiedzi 963 wizyt
pytanie zadane 19 marca 2016 w C i C++ przez luparuwka Początkujący (400 p.)

93,164 zapytań

142,176 odpowiedzi

321,934 komentarzy

62,491 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 688p. - dia-Chann
  2. 676p. - CC PL
  3. 675p. - Łukasz Piwowar
  4. 662p. - Łukasz Eckert
  5. 649p. - Michal Drewniak
  6. 641p. - rucin93
  7. 621p. - Dawid128
  8. 572p. - ssynowiec
  9. 521p. - Piotr Aleksandrowicz
  10. 498p. - Michał Telesz
  11. 490p. - Hubert Chęciński
  12. 457p. - Marcin Putra
  13. 437p. - nidomika
  14. 432p. - rafalszastok
  15. 427p. - Adrian Wieprzkowicz
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...