Program wyświetlający "nazwy kolorów"- błąd w działaniu - prośba o pomoc

Program wyświetlający "nazwy kolorów"- błąd w działaniu - prośba o pomoc
PG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Cześć następujący problem z programem , który ma prosić użytkownika o podanie 2 nazw kolorów podstawowych. May do dyspozycji trzy kolory . Jeżeli użytkownik wpisze czerwony i niebieski program ma dać wynik fioletowy zaś jeśli użytkownik wpisze kolor niebieski i żółty program ma dać wynik zielony

Kopiuj
color1 = "czerwony"
color2 = "niebieski"
color3 = "zolty"
zmienna = input("Wprowadz nazwę pierwszego koloru")
zmienna2 = input("Wprowadz nazwę  drugiego koloru")
result = zmienna+zmienna2
result2 = zmienna+zmienna2
if result:
     result =color1+color2
     print("fioletowy")
elif result2:
     result = color2 + color3
     print("zielony")
else:
     result !=color1
     result !=color2
     result !=color3
     result2 !=color1
     result2 !=color2
     result2 !=color3
print("Błędny kolor")

Błąd jest następujący program po wpisaniu ma dać dwa kolory fioletowy i niebieski zaś w przeciwnym razie ma wypisać komunikat o podaniu błędnego koloru . Dany fragment kodu ma wyświetlać pojedynczy wynik np. filetowy zielony oraz błędny kolor . Natomiast mój program coś mi fiksuje i po podaniu koloru czerwonego i niebieskiego wyświetla mi dwa napisy na raz fioletowy oraz błędny kolor (działa tak jakby wykonywał dwa bloki kodu równocześnie , a powinien wyświetlić je pojedynczo zaś jeden blok kodu mi nie działa w ogóle- blok kodu nie jest wykonywany. Co może być przyczyną takiego błędu ?
Jak na początkującą osobę kod , który zrobiłem wygląda mi w miarę ok i nie wiem co jest przyczyną takiego problemu.
Ponieważ działanie kodu , który stworzyłem rozumiem w następujący sposób program na początku przypisuje do 3 zmiennych o nazwach color 1,2i3 odpowiednie nazwy kolorów następnie wykonuje się 2 raz funkcja prosząca użytkownika o podania nazw kolorów , kolejno aby sobie uprościć bo moim zdaniem to jest uproszczenie dokonałem stworzenie dwóch zmiennych result w , których przypisywany jest wynik z podanych przez użytkownika danych czyli zmienna1+ zmienna 2 , które to dane zostają następnie przypisane do zmiennej result oraz result 2 no i następnie powinny zostać wyświetlone blok i odpowiednio po sobie czyli po wpisaniu czerwony, niebieski powinien się wykonać blok if po wpisaniu niebieski, żółty powinien zostać wykonany blok elif, a w innym wypadku else . Co może dawać taki błąd o jakim wspomniałem wcześniej? Dodam , że próbowałem jeszcze innej konstrukcji kodu

Kopiuj
color1 = "czerwony"
color2 = "niebieski"
color3 = "zolty"
zmienna = input("Wprowadz nazwę pierwszego koloru")
zmienna2 = input("Wprowadz nazwę  drugiego koloru")
result = zmienna+zmienna2
result = zmienna+zmienna2
kolor1 = color1+color2
kolor2 = color2+ color3
if result:
     result == kolor1
     print("fioletowy")
elif result:
     result == kolor2
     print("zielony")
else:
 print("Błędny kolor")

ale w tym przypadku też daje mi błąd tylko inny po podaniu danych zostaje wykonany tylko blok kodu w konstrukcji if , bloki w elif oraz else są pomijane dodam, że obie konstrukcje wydają mi się w miarę ok z czego bardziej skłaniał bym się do drugiej opcji

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
1
Kopiuj
if __name__ == '__main__':
    #    print_hi('PyCharm')
    color1 = "czerwony"
    color2 = "niebieski"
    color3 = "zolty"

    zmienna = raw_input("Wprowadz nazwę pierwszego koloru")
    zmienna2 = raw_input("Wprowadz nazwę  drugiego koloru")

    if (zmienna == color1 and zmienna2 == color2) or (zmienna == color2 and zmienna2 == color1):
        print("fioletowy")
    elif (zmienna == color2 and zmienna2 == color3) or (zmienna == color3 and zmienna2 == color2):
        print("zielony")
    else:
        print("Błędny kolor")
PG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Nadal nie udało mi się rozwiązać problemu , a próbuje na różne sposoby. Załączam załączniki w pierwszym załączniku program nie działa w ogóle ( odrzuca mi konstrukcję if-elif-else) , a mianowicie nie chce mi program "przepuścić" komendy elif. Drugi screen przedstawia "działający" program działa on jednak tak , że wypisuje mi on wszelkie komunikaty , a powinien każdy z osobna , choć to pewnie dlatego się tak dzieje , że konstrukcja jest zbudowana na samych if' ach . Próbowałem jeszcze konstrukcją If-else-if jednak daje mi to błąd jak w pierwszym przypadku instrukcje else są odrzucane (traktowane jako błędne)- błąd przedstawiony na 3 screenie . Proszę o wytłumaczenie dlaczego się tak dzieje ? Może przez złe wcięcia kodu lub "niewidoczne" białe znaki nie wiem takie opcje też rozważałem . No i oczywiście wiem nazewnictwo jest błędne i będę je zmieniał . Natomiast nie to jest meritum mojego programu tylko błędne działanie lub to ,że w ogóle on nie działa . Proszę o pomoc :)

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
1

Jaki błąd, debugowałeś? To wygląda na trywialne.

PG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

@lion137: W PyCharm uzyskałem wynik działania programu kod :0 co powinno oznaczać , że program wykonywany jest bez większych komplikacji kod poniżej (długo to testowałem)

Kopiuj
color1 = "czerwony"
color2 = "niebieski"
color3 = "zolty"
zmienna = input("Wprowadz nazwę pierwszego koloru")
zmienna2 = input("Wprowadz nazwę  drugiego koloru")
result = zmienna+zmienna2
result2 = zmienna+zmienna2
kolor1 = color1+color2
kolor2 = color2+ color3
if result:
     result == kolor1
     print("fioletowy")
elif result:
     result == kolor2
     print("zielony")
else:
    result != kolor1 and kolor2
    print("Błędny kolor")

Problem jednak polega na tym , że program wyświetla mi uparcie wynik fioletowy bez względu na to co podam . Jak wpiszę czerwony i niebieski to ma mi dać wynik fioletowy i to działa ok daje mi wynik fioletowy . Jednak w innym przypadku ,gdy wpiszę niebieski i zolty to również otrzymuje jak wynik fioletowy to samo w przypadku jeśli wpisze kolor inny niż czerwony , niebieski czy żółty również dostaje jako wynik fioletowy :) już nie wiem co z tym zrobić , a błąd zapewne jest faktycznie trywialny ale nie mogę odkryć tego co jest przyczyną , a jak wspomniałem podczas debugowania tej wersji kodu dostaje rezultat :0 co oznacza z mojej wiedzy , że wszystko powinny być ok i działać jak trzeba , a tak nie jest :(

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
1

result jest true, więc pierwszy if zawsze prawdziwy. Daj:
if result == kolor1:
.....

PG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

@lion137: dzięki działa ok

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.