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

Python nieprawidłowa składnia instrukcji elif

Object Storage Arubacloud
0 głosów
253 wizyt
pytanie zadane 16 listopada 2022 w Python przez niezalogowany

Nie mogę znaleźć nieprawidłowowści składni elif w poniższym kodzie:

 

import random

def game():
    cow = 0
    bull = 0
    num = random.randint(1,10**5)
    nums = str(num)
    n = list(nums)
    print(n)
    if len(n) < 4:
        n.append(str(random.randint(1,10))
    elif len(n) > 4:
        t = n.pop(-1)
    a = input(("Wygenerowałe dcla ciebie 4 cufrową liczbę podaj proszę 1 cyfrę tej liczby"))
    n = n(int(i) for i in n):

    licznik = 1
    l = 0
    r = True
    while r:
        
    
        if a == int(n[l+1]if l <=3):
            cow += 1
            print("Gratulace odgąłdłęs liczbę masz",cow,"krowy/ę i",bull,"byki/a")
            licznik += 1
            l +=1
            if cow < 4:
                a = int(input("Teraz podaj",licznik,"cyfrę wygenerowanej liczby"))
            else:
                r = False
            b = "".join(i for i in n) 
            
        elif a in n and r = True:
            print("Odgładłeś liczbę ale nie jest ona na pozycji",licznik)
            bull +=1
            print("Masz",cow,"krowy/ę i",bull,"byki/a")
            a = int(input("Spróbuj ponownie"))
            
        while a !in n:
            print("Nie odgadłeś żadnej liczby")
            a = int(input("Spróbuj ponownie"))
            if cow
        return b
print(game())

 

2 odpowiedzi

+1 głos
odpowiedź 16 listopada 2022 przez Velta Maniak (52,010 p.)
Brakuje jeszcze jednego nawiasu zamykającego w linijce poprzedzającej. Metoda "append" nigdy się nie zamyka.
0 głosów
odpowiedź 17 listopada 2022 przez VBService Ekspert (252,740 p.)
edycja 17 listopada 2022 przez VBService
  • linia 11 - brak na końcu nawiasu (wskazówka @Velta)
    n.append(str(random.randint(1,10)))
  • linia 14 - podwójny nawias - wystarczy jedna para
    a = input(("Wygenerowałe dcla ciebie 4 ... 1 cyfrę tej liczby"))
  • linia 15 - niepotrzebny dwukropek na końcu
    n = n(int(i) for i in n): 
    co tu w ogóle chcesz uzyskać n jest listą (linia 8)
  • linia 23 - chyba chodziło o: if a == int(n[l+1]):
  • linia 34 - brakuje jednego znaku równości
    elif a in n and r == True:
  • linia 40 - negację w python-ie zapisz słowem kluczowym not
    while a not in n:
  • linia 43 - if cow    i co dalej wink
  • no i pełno literówek smiley (w string-ach)

 

dla

Wygenerowałe dcla ciebie 4 cufrową liczbę

zamiast

    num = random.randint(1,10**5)
    nums = str(num)
    n = list(nums)
    print(n)
    if len(n) < 4:
        n.append(str(random.randint(1,10)))
    elif len(n) > 4:
        t = n.pop(-1)

po prostu

# od 1111 do 9999
n = [str(random.randint(1,9)) for _ in range(4)]
print(n, "".join(n))

 

można nieco skrócić kod, np. (krowy i byki - dodaj sam wink)

[ on-line ]

import random
 

def game():
    pozycja_liczby_slownie = [ 'pierwszą', 'drugą', 'trzecią', 'ostatnią']

    n = [str(random.randint(1,9)) for _ in range(4)]
    print(n, "".join(n))
    print("Wygenerowałem dla Ciebie 4 cyfrową liczbę")
    
    licznik = 0
    
    while True:
        a = input(f"Podaj proszę {pozycja_liczby_slownie[licznik]} cyfrę tej liczby: ")

        try:
            if licznik == n.index(a, licznik):
                print(f"Gratulacje! Odgadłeś {pozycja_liczby_slownie[licznik]} cyfrę")
                licznik += 1
            elif a in n:
                print(f"Odgadłeś cyfrę, ale nie jest ona na pozycji {licznik+1}")
        except ValueError:
            print("Nie odgadłeś cyfry! Spróbuj ponownie")
            
        if licznik > 3:
            break

game()

Python List index() ]

 

P.S. można "pokolorować" teksty, np.

[ on-line ]

...

def color(code):
    return f"\33[{code}m"


...

print(color(31) + "Nie odgadłeś cyfry! Spróbuj ponownie" + color(0))

...

How to add colour to text Python? ]

1
komentarz 17 listopada 2022 przez niezalogowany
Wielkie dzięki za pomoc jeśli chodiz o te pozostąłe błędy to ich nie zauważyłem bo najpierw próbowałęm naprawić ten pierwszy błąd.
komentarz 17 listopada 2022 przez VBService Ekspert (252,740 p.)
edycja 17 listopada 2022 przez VBService

Spoko, uczysz się (Ja też się ciągle czegoś nowego uczę), masz prawo nie wiedzieć (Ja też wszystkiego nie wiem), masz prawo pytać, wypisałem Tobie błędy bo zapytałeś, nie maiłem zamiaru się śmiać z Ciebie czy coś w tym stylu. smiley

 

BTW, Twój pomysł na ten programik trochę przypomina grę Mastermind wink

Podobne pytania

+1 głos
1 odpowiedź 1,047 wizyt
pytanie zadane 24 maja 2019 w Python przez Ventre90 Obywatel (1,170 p.)
0 głosów
1 odpowiedź 121 wizyt
pytanie zadane 15 kwietnia 2019 w Python przez Muzykeq Użytkownik (710 p.)
0 głosów
2 odpowiedzi 176 wizyt
pytanie zadane 2 stycznia 2017 w Python przez Helmik Użytkownik (680 p.)

92,555 zapytań

141,402 odpowiedzi

319,548 komentarzy

61,939 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...