plik txt bardzo początkujący

0

Chodzi o to ,że znajduje dziwne słowa,których nie ma w naszym języku,ale istnieją w innych słowach,np.ytk nie ma ale jest frytkownica,a mi chodzi o to aby znajdował dokładnie te same słowa np, kot to kot a nie pokot

a=input('podaj slowo\n')
lista=list(a)

lista2=[]
for i in range(0,3):
    c=lista.pop(0)
    lista2.insert(0,c)
li2="".join(lista2)    
print(li2)

lista3=[]
for i in range(0,3):
    c=lista2.pop(0)
    lista3.insert(1,c)
li3=''.join(lista3)
print(li3)

lista4=[]
for i in range(0,3):
    c=lista3.pop(0)
    lista4.insert(0,c)
li4=''.join(lista4)
print(li4)

lista5=[]
for i in range(0,3):
    c=lista4.pop(0)
    lista5.insert(1,c)
li5="".join(lista5)
print(li5)

lista6=lista5[::-1]

li7=''.join(lista6)
print(li7)

print("ktore slowa sa w slowniku")
with open('slowa.txt') as plik:
     if  li2 in plik.read():
         print(li2)


with open('slowa.txt') as plik:
     if  li3 in plik.read():
         print(li3)
       
with open('slowa.txt') as plik:
     if  li4 in plik.read():
         print(li4)

with open('slowa.txt') as plik:
     if  li5 in plik.read():
         print(li5)

         
with open('slowa.txt') as plik:
     if  li7 in plik.read():
         print(li7)
0

To tak, nie wiem jak wygląda Twój plik slowa.txt, ale przy założeniu, że jest sczytany do listy, to wygląda to tak (jeśli dictionary będzie iteratrorem - otwartym plikiem, jak to powinno być przy dużych plikach), to logika nie powinna się zmienić, używamy itertools:

import itertools

dictionary = ["kot", "ala", "tok", "ja", "aj"]

def get_list_anagrams_of_word_with_dictionary(word, dictionary):
	possible_anagrams = map(make_word, itertools.permutations(word))
	return list(filter(lambda x: x in dictionary, possible_anagrams))

def make_word(word_as_list):
	return "".join(word_as_list)


print(get_list_anagrams_of_word_with_dictionary("kot", dictionary)) -> ['kot', 'tok']

A w ogóle, to bardzo słabo tłumaczysz kod i problem.

0

Słowa to plik słownika języka polskiego w txt ściągnięty gdzieś z neta.Jest to plik zewnętrznry(jeśli takie pojęcie w ogóle istnieje)

0

Ok, ale jak wygląda, jak go czytać?

0
lion137 napisał(a):

Ok, ale jak wygląda, jak go czytać?

a skąd mam to wiedzieć, na litość boską jestem już babcią,ale to plik tekstowy,wyrazy są w nim zapisane jeden po drugim.np.
pole
poletko

1

Na litość Szatana, a skąd ja mam wiedzieć? Nie widzę tego pliku. Pokaż jak wygląda.

0
lion137 napisał(a):

Na litość Szatana, a skąd ja mam wiedzieć? Nie widzę tego pliku. Pokaż jak wygląda.

aa
aaa
aaronowa
aaronową
aaronowe
aaronowego
aaronowej
aaronowemu
aaronowi
aaronowy
aaronowych
aaronowym
aaronowymi
abace
abachicie
abachit
abachitach
abachitami
abachitem
abachitom
abachitowi
abachitów
abachitu

ma 40,8 mb
to zwykły txt

0

To teraz, żeby odtworzyć problem, stwórz sobie jakiś mały pliczek, data.txt, jak ten:

kot
ala
tok
ja
aj

I przeanalizuj dlaczego ten kod drukuje to co trzeba:

import itertools


with open("data.txt") as file:
	dictionary = file.read()


def get_list_anagrams_from_dictionary(word, dictionary):
	possible_anagrams = map(_make_word, itertools.permutations(word))
	return list(filter(lambda x: x in dictionary, possible_anagrams))


def _make_word(word_as_list):
	return "".join(word_as_list)



print(get_list_anagrams_from_dictionary("kot", dictionary)) # -> ['kot', 'tok']
0
lion137 napisał(a):

To teraz, żeby odtworzyć problem, stwórz sobie jakiś mały pliczek, data.txt, jak ten:

kot
ala
tok
ja
aj

I przeanalizuj dlaczego ten kod drukuje to co trzeba:

import itertools


with open("data.txt") as file:
	dictionary = file.read()


def get_list_anagrams_from_dictionary(word, dictionary):
	possible_anagrams = map(_make_word, itertools.permutations(word))
	return list(filter(lambda x: x in dictionary, possible_anagrams))


def _make_word(word_as_list):
	return "".join(word_as_list)



print(get_list_anagrams_from_dictionary("kot", dictionary)) # -> ['kot', 'tok']

dzieki za odpowiedz połowy nie jarzę,ale nie szkodzi,na pewno nadrobię zaległości,co to jest ten itrtools

0

Liczenie wszystkich możliwych permutacji liter we wszystkich możliwych słowach w języku zajmie bardzo dużo. Co konkretnie chcesz uzyskać? Bo być może da się to zrobić sprytnie…

Na przykład jeśli chcesz sprawdzić, czy jedno słowo jest anagramem jakiegoś innego; albo znaleźć wszystkie anagramy jakiegoś słowa, to możesz trzymać słownik {posortowane litery: lista możliwych słów}. Jak chcesz to rozszerzyć na szukanie anagramów zdań, to zamiast posortowanych liter, lepiej będzie trzymać histogram (liczbę zliczeń wystąpień, np. anagram → {'a': 3, 'n': 1, 'g': 1, 'r': 1, 'm': 1}, itd.

To się szybko potrafi zrobić paskudne obliczeniowo (problem plecakowy), ale dobra struktura danych sporo pomoże.

1 użytkowników online, w tym zalogowanych: 0, gości: 1