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:ponad 4 lata
  • Ostatnio:około 3 lata
  • 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:ponad 17 lat
  • Ostatnio:około 5 godzin
  • Postów:1595
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:ponad 4 lata
  • Ostatnio:około 3 lata
  • 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:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4884
1

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


PG
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 3 lata
  • 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 :(

woolfik
Przecież dałem Ci gotowy kod wystarczyło go użyć ;)
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4884
1

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


edytowany 2x, ostatnio: lion137
PG
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 3 lata
  • Postów:26
0

@lion137: dzięki działa ok

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)