Mi lehet a baj a megírt programban(Python)? Tudnátok segíteni?
Az lenne a feladatom, hogy írassam ki egy file-ból az ötbetűs szavakat. Ki is írja, de nem a legegyszerűbb alakban, és az szavak abc sorrendben vannak.
Eddig ennyit írtam:
szavak_szama = 0
elozo_betu = 'a'
with open('szoveg.txt') as sorok:
for szo in sorok:
if elozo_betu == szo[0] and len(szo) == 5:
szavak_szama += 1
else:
print(elozo_betu + ':' + str(szavak_szama))
szavak_szama = 0
elozo_betu = szo[0]
Nem mondhatnám, hogy értem a szándékot, pláne, hogy nálam a kimenet még csak nem is emlékeztet a „Ki is írja, de nem a legegyszerűbb alakban, és az szavak abc sorrendben vannak.” leírásra.
Nem ismerem a Python rejtelmeit, úgyhogy hiába próbáltam kiokoskodni, mit csinál a programod, ezért szégyenszemre másikat írtam helyette.
Én valami effélét képzelnék el (ékezetes szavak esetén nem jól működik – pontosabban a maga módján éppen, hogy jól, mivel a több bájtos karaktereket a valódi hosszukban számolja):
sorszam = 0;
sorok = open('szoveg.txt', 'r')
while True:
egysor = sorok.readline()
if not egysor:
break
szavak = egysor.split()
for szo in szavak:
if len(szo) == 5:
sorszam += 1
print(str(sorszam) + ': ' + szo)
sorok.close()
előző vagy nem akartam sokat baszakódni lehet nem is nézed meg.
Wikipédiából kimásoltam egy random oldalt az volt teszt szövegem nekem működött ha jól értettem a feladatót.
szoveg=open('szoveg.txt', encoding='UTF8')#nekem kellet a UTF8 kódolás Wikipédiából kimásoltam egy oldalt az volt teszt szövegem
mondat=[]
for sor in szoveg:
mondat=sor.split(' ')
for szo in mondat:
for betu in szo:#speciális karakterek miatt kell pl ha pont van egy mondatba akkor azokat lekell vágni.
nagy_betu=betu.upper()
kis_betu=betu.lower()
if nagy_betu ==kis_betu:#ezzel baszakodtam a legtöbbet nem tudtam ,hogy oldjam meg hogy csak speckó karaktereket vágjam le. ezzel a megoldással álltam elő Ha betű kicsinek meg nagynak is egyforma akkor az speckó karakter
szo=szo.replace(betu,'')#levágja speckó karakter
if len(szo)==5:#ha 5 betűs a szó kiírja.
print(szo)
szoveg.close()
#3 7825 szó lett legenerálva, de így kezdődik:
abbahagyjuk
abbahagyta
abbamaradt
abban
ablak
ablaka
ablakai
ablakban
ablakhoz
ablakocska
ablakok
ablakokat
ablakokra
ablakon
ablakos
ablakot
ablakra
ablakzugba
abony
abonyban
abonyi
abonyiak
abroszok
ad
adasson
adatok
add
addig
adhat
adhatja
adj
adja
adjanak
adjatok
adjon
adjuk
adjunk
adna
adnak
adni
adnom
adnunk
adod
adogat
adok
adom
adott
adsz
adta
adtak
adtam
adunk
aga
agg
aggasztotta
aggodal
aggodalmakkal
aggodalmas
aggodalmasan
aggodalom
aggodalommal
aggodalomra
agya
agyag
agyagba
agyagos
agyagot
agyba
agyon
agyonvert
agyonverten
ahelyett
ahhoz
ahmed
ahmednek
ahogy
ahogyan
ahol
ahonnan
ahova
ahun
ajak
ajakkal
ajka
ajkakkal
ajtaja
ajtajuk
akad
akadsz
akadt
akadtak
akar
akarata
akaratlanul
akaratomat
akaratos
akaratot
akaratukat
akarhat
akarja
akarjuk
akarlak
akarna
akarnak
akarod
akarok
akarom
akarsz
akart
akarta
akartad
akartak
akartalak
akartam
akartok
akartuk
akartunk
akaszd
akassz
akasszon
akasztani
akasztott
akasztva
aki
akik
akiket
akikkel
akiknek
akin
akinek
akit
akivel
akkor
akkora
akkordjai
akkordok
akkori
akkoriban
akkornap
akkorra
akna
akol
akolban
akolnak
alacsony
alacsonyodott
alagutakra
alagutat
alak
alakban
alakja
alaknak
alakok
alakot
alakra
alant
alatt
alatta
alatti
alattuk
alattunk
alhatik
alhatott
alhatunk
ali
alias
alig
aligha
alighanem
alighogy
alja
alkalmas
alkalmasnak
alkalomhoz
alkalommal
alkalomra
alkonyat
alkonyatig
alkonyatkor
alkonyatra
alkonyodott
alkotott
alku
alkuba
alkudtam
allah
allaha
allahnak
allahot
alma
almafa
almagyar
almagyari
almagyariak
almagyaron
alomnak
alszanak
alszik
alszok
alszom
alszunk
altatgatjuk
altatja
altiszt
altisztek
aludj
aludjatok
aludjon
aludjunk
aludna
aludni
aludnom
aludt
aludtak
aludtam
alul
aluszik
amade
amarra
amaz
amazok
amazt
ameddig
amekkora
amellett
amely
amelybe
amelyben
amelyek
amelyekben
amelyeken
amelyekkel
amelyeknek
amelyekre
amelyen
amelyet
amelyhez
amelyik
amelyikben
amelyiken
amelyiket
amelyiknek
amelyikre
amelyitek
amellyel
amelynek
amelyre
amennyi
amennyin
amennyire
amennyit
amennyivel
amerre
ami
amije
amik
amiket
amikor
amilyen
amilyenek
amilyennek
amilyent
amilyet
aminek
amint
amire
amit
amoda
amott
amulett
amulettem
amulettemet
amulettet
angol
angyal
angyalok
angyalom
angyalszobrokat
angyalt
anna
annak
antal
antalt
anya
anyai
anyajegy
anyaszeretet
anyja
anyjuk
annyi
annyian
annyiba
annyira
annyiszor
annyit
apa
apadjon
apadt
apja
apjuk
apuska
arab
arabeszkjein
arabok
arabs
arabus
arany
aranyad
aranyait
aranyak
aranyakat
aranyamat
aranyat
aranyba
aranygombjait
aranygombok
aranygombos
aranykelyhek
arannyal
aranyos
aranyosnak
aranyozni
aranyozott
aranysallangos
aranyszarv
aranyszert
aranytorony
arasznyi
arasznyira
araszos
arc
arca
arcba
arcban
arccal
arcodat
arcodon
arcok
arcokat
arcomat
arcomban
arcommal
arcon
arcot
arcra
arcuk
arcukat
arcukon
arcul
arra
aszabhoz
aszabokat
aszalt
aszerint
aszongya
asszony
asszonya
asszonyaik
asszonyhoz
asszonyi
asszonynak
asszonnyal
asszonyok
asszonyokat
asszonyokhoz
asszonyokkal
asszonyom
asszonyon
asszonyra
asszonyt
asszonyunk
asztal
asztalhoz
asztalon
asztalra
asztalt
asztalukra
atilla
atlaszt
atyafival
atyai
atyja
augusztus
augusztusban
augusztusi
ausztria
avagy
avarban
avaron
avult
avval
az
azalatt
azaz
azazhogy
aznap
aznapi
aznapon
azok
azokat
azokba
azokban
azokhoz
azokkal
azoknak
azokon
azokra
azon
azonban
azonnal
azonos
azt
azzal
baba
babadzsizi
babona
babot
bagariacsizma
bagoly
bagolyarcot
baj
baja
bajba
bajod
bajodban
bajom
bajos
bajosan
bajsza
bajszos
bajunk
bajusz
bajusza
bajusznak
bajuszom
bajuszos
bajuszt
bajuszuk
bajuszukat
bakancs
bakancsot
legegyszerűbb alakban azt értem, hogy kezdőbetűnként írja ki és ne szavanként.
Erre gondoltam
a:13
b:35
c:64
(ezeket csak random írtam ki, természetesen másik értéket kapnék, ha lefuttatnám)
és így tovább...
de nekem így írja ki:
a:0
a:0
a:0
a:1
a:0
a teljes szüvegfájl: [link]
és tovább.
Elnézést, rosszul írtam ki a kérdést:
Készítsünk egy programot, amely segítségével meghatározhatjuk hány olyan szó van, ami 5 betűből áll.
Azóta módosítottam a programon, mert eszembe ötlött, hogy a soronkénti beolvasásra nincs szükség. Aki ismeri a Pythont, alighanem tovább is egyszerűsíthet rajta, én egyelőre itt tartok:
fajl = open('szoveg.txt', 'r')
szoveg = fajl.read()
fajl.close()
szavak = szoveg.split()
szamlalo = 0;
for szo in szavak:
if len(szo) == 5:
szamlalo += 1
print('A fájlban ' + str(szamlalo) + ' ötbetűs szó található')
A program a pontosított kívánalomnak megfelelően már csak a számlálás eredményét írja ki. Ahogy látom, a belinkelt fájlod nem tartalmaz magyar ékezetes karaktereket, tehát az ilyen irányú aggodalmaim fölöslegesek voltak. Egyébként pl. UTF-8 kódolás esetén a beolvasáskor ennyivel bonyolítaná meg a program elejét:
import codecs
fajl = codecs.open("szoveg.txt", "r", "utf-8")
A többi ugyanaz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!