Kezdőoldal » Számítástechnika » Programozás » Mi lehet a baj a megírt...

Erlyx kérdése:

Mi lehet a baj a megírt programban(Python)? Tudnátok segíteni?

Figyelt kérdés

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]



2021. jan. 10. 23:26
 1/9 A kérdező kommentje:
legkívül van a szavak_szama; az elozo_betu és a with, benntebb a for, még benntebb az if és else, a többi pedig legbelül.
2021. jan. 10. 23:29
 2/9 tabaki ***** válasza:

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()

2021. jan. 11. 00:48
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
én segítenék neked 'szoveg.txt' elküldenéd valamennyi részét ,hogy néz ki fájl.'legegyszerűbb alakban' az mit jelent?és már ábc sorrendben vannak vagy abba kell legyen az output?
2021. jan. 11. 06:51
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:

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()

2021. jan. 11. 07:45
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

#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.

2021. jan. 11. 09:32
 6/9 A kérdező kommentje:

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.

2021. jan. 11. 09:50
 7/9 tabaki ***** válasza:
100%
Nem tesz semmit, az a fő, hogy így is kaptál rá megoldást.
2021. jan. 11. 12:37
Hasznos számodra ez a válasz?
 8/9 tabaki ***** válasza:
100%

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.

2021. jan. 11. 15:00
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Köszönöm!
2021. jan. 28. 21:44

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!