Cześć drodzy pasjonaci. Znów zwracam sie do Was z pytaniem. czy istnieje możliwość bardziej optymalnego formatowania pliku txt (żeby finalnie stał się on listą). Napisałem grę wisielec. Na początku słowo,które trzeba zgadnąć wpisywałem jako wartość funkcji, potem stworzyłem jakąś krótka listę. Dalej rozwijając ten program zrobiłem większą"baze" słów w pliku txt. Dane kopiowałem z jakiejś strony więc format nie jest idealny. Nie formatowałem tego jednak ręcznie bo wpadłem na pomysł, żeby zrobić to w pythonie. Plik txt wygląda tak:
tydzien=897 sytuacja=892 wczoraj=892 pieniadz=891 niebo=885 morze=880 takze=878 wazny=872 tworzyc=869 tam=861 material=861
mleko=821 system=820 glos=819 silny=817 pisac=810 slonce=809 poczatek=809 pic=807 znac=806 serce=806 tysiac=801 poludniowy=800 wiatr=800 wyraz=799 obraz=798 drzwi=798
wszystkie=588 2=586 uczucie=586 zachodni=585 chlopiec=585 spac=585 cena=584 program=584 komputer=583 calosc=582 5=580 elektryczny=578 polityczny=578 pojazd=577
dziedzina=569 ludzki=567 zloty=566 przyjsc=566 spoleczny=565 dokument=564 niebieski=563 wiedza=561 przypadek=559 herbata=558 trzeba=557 list=556 okolo=556
1. Moim celem było pozostawienie tylko wyrazów w formie listy jako bazy danych slow do gry wisielec. Próbowałem to zrobić w pętli ale miałem błąd, że int nie może być iterowany. Także jak już udało mi się stworzyć listę z tego pliku to dowiedziałem się, że w liście nie działa metoda 'replace', dlatego wszystko formatowałem jeszcze przed zamianą do listy. Finalnie wygląda to tak ale mam wątpliwości czy to jest optymalne rozwiązanie.
2. Jeszcze mam do Was takie pytanie. Jak wyznaczy ścieżkę do zapisu i odczytu pliku w pythonie. Niestety obecnie python zapisuje i odczytuje pliki tylko w katalogu domyślnym ( chyba tam gdzie jest zainstalowany). Zwraca mi błąd, że plik nie istnieje lub nie może go odnaleźć nawet wtedy gdy program i plik txt jest w tym samym folderze. Jak narzazie wszystko robię w tym katalogu domyślnym ale to nie jest zbyt komfortowe.
import random
f = open("HMbase.txt","r")
value = f.read()
value = value.replace("=","")
value = value.replace("1","")
value = value.replace("2","")
value = value.replace("3","")
value = value.replace("4","")
value = value.replace("5","")
value = value.replace("6","")
value = value.replace("7","")
value = value.replace("8","")
value = value.replace("9","")
value = value.replace("0","")
value = value.strip()
value = value.split()
f.close()
num = random.randint(0,len(value)-1)
spell = value[num]
def hangman(word):
wrong = 0
stage = ["",
"________ ",
"| ",
"| | ",
"| 0 ",
"| /|\ ",
"| / \ ",
"| "
]
board = ["__"] * len(word)
letter = list(word)
win = False
print(".::. HANGMAN GAME .::.")
while wrong < len(stage) - 1:
print("\n")
msg = "Enter the letter: "
char = input(msg)
if char in letter:
place = letter.index(char)
board[place] = char
letter[place] = "#"
else:
wrong += 1
r = wrong + 1
print (" ".join(board))
print ("\n".join(stage[0:r]))
if "__" not in board:
print("\nYOU WIN !!!")
print(" ".join(board))
win = True
break
if not win:
print("\nGAME OVER")
print("You should spell: '{}'".format(word))
hangman(spell)