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

Program do nauki fiszek

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
218 wizyt
pytanie zadane 17 września 2021 w Python przez void6 Użytkownik (790 p.)

Cześć,

Napisałem ostatnio z kolegą program służący do nauki różnych słówek.

Potrzebuję teraz zrobić podobny program tylko że będzie 3 kolumny więcej.

Na ten moment wyświetla mi się komunikat ''ValueError: too many values to unpack (expected 2)''

import random
import os
file = open("test.txt", "r", encoding="utf-8").readlines()
wordList = []

for file in file:
    [eng, pl] = file.split(" - ")
    wordList.append([eng.strip(),pl.strip()])
random.shuffle(wordList)

cls = lambda: os.system('cls')


def somethingElse(wordList):
    total = len(wordList)


def englishPolish(words):
    for word in words.items:
        [inf, ps, pp, pl] = word
        input(f"\n[ENG] {inf}, {ps}, {pp}? ")
        answer = input(f"[PL] {pl}").lower()
        cls()

Fragment pliku test.txt

be - was/were - been - być

become - became - become - stać się

begin - began - begun - zacząć

break - broke - broken - złamać

bring - brought - brought - przynieść

build - built - built - budować

burn - burned/burnt burned/burnt - spalić

buy - bought - bought - kupować

catch - caught - caught - złapać

choose - chose - chosen - wybrać

come - come - come - przyjść

cost - cost - cost - kosztować

cut - cut - cut - ciąć

dig - dug - dug - kopać

do - did - done - zrobić

draw - drew - drawn - rysować

dream - dreamed/dreamt - dreamed/dreamt - śnić,marzyć

drive - drove - driven - prowadzić samochód

Dzięki 

1
komentarz 17 września 2021 przez Wiciorny Ekspert (281,350 p.)

be - was/were - been - być

Noo, synek. Odmień być, nie no co Ty tato. Jedynie co mi przyszło do głowy na wstępie haha. Klasyka. 

1 odpowiedź

+1 głos
odpowiedź 18 września 2021 przez Sadako Obywatel (1,240 p.)

Hej

Tak jak mówi błąd. Dostajesz liste z czterema zmiennymi, a próbujesz wypakować do dwóch (expected 2).

[eng, pl] = file.split(" - ")

Weźmy pierwszą linię: "be - was/were - been - być".
Dla niej otrzymasz tablice: ["be", "was/were", "been", "być"]
Nie możesz tego wypakować do dwóch zmiennych.
Możesz wypakować do czterech:

[eng1, eng2, eng3, pl ] = file.splite(" - ")

Ewentualnie, użyć małego tricku z *. Gwiazdka znaczy zmienną liczbę argumentów.

[*eng, pl] = file.split(" - ")

Zadziała to tak, że interpreter stworzy tablice eng i wsadzi do niej wszystkie zmienne oprócz ostatniej, która zostanie wypakowana do zmiennej pl. Pamiętaj, że w wersji z gwiazdką eng to będzie tablica!!
Myślę, że warto wspomnieć, że kwadratowe nawiasy w tym unpackingu są zbędne.
Możesz napisać równie dobrze tak:

*eng, pl = file.split(" - ")

Wynik będzie taki sam.

Powodzenia w nauce programowania i języka angielskiego ;p

komentarz 18 września 2021 przez void6 Użytkownik (790 p.)

dzięki, akurat doszedłem do podebnego kroku, tylko że do jednej listy .txt dałem 3 zmienne a do drugiej listy .txt same odpowiedzi. Problem tylko jest taki że po odpalniu polskie słówka zmnieją się, a angielskie zostają. 

import random
import os
file = open("wwww.txt", "r", encoding="utf-8").readlines()
wordList = []
 
for file in file:
    *eng, pl = file.split(" - ")
    wordList.append([eng.strip(), pl.strip()])
    random.shuffle(wordList)
 
cls = lambda: os.system('cls')
 
 
def somethingElse(wordList):
    total = len(wordList)
 
 
def englishPolish(words):
    for word in words.items:
        *eng, pl = word
        input(f"[ENG] {eng} ")
        input(f"[PL] {pl}")
        cls();

Output:

[ENG] be, was/were - been

[PL] być

[ENG] be, was/were - been

[PL] stać się

[ENG] be, was/were - been

[PL] zacząć

Podobne pytania

+1 głos
0 odpowiedzi 876 wizyt
0 głosów
1 odpowiedź 343 wizyt
pytanie zadane 17 marca 2019 w Java przez Paweł Szewczyk Obywatel (1,420 p.)
+3 głosów
0 odpowiedzi 310 wizyt
pytanie zadane 6 sierpnia 2018 w Nasze projekty przez Michał Biernacki Użytkownik (670 p.)

93,444 zapytań

142,436 odpowiedzi

322,698 komentarzy

62,806 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

...