Kezdőoldal » Számítástechnika » Programozás » Hogy kell Pythonban hisztogram...

Hogy kell Pythonban hisztogramot rajzolni? Hobbiból próbálkozom a Pythonnal, és elakadtam (milyen meglepő. ). Ez a feladat: Rajzolj egy hisztogramot számok listájából, ahol minden szám a listában egy sort jelöl.

Figyelt kérdés

Például, ha az alábbi listánk van: vals = [ 0,2,4,8,4,2,1 ] akkor ezt kellene kirajzolni: ** **** ******** **** ** * ahol az első sorban nincs csillag, a másodikban 2 van, a harmadikban 4 és így tovább. Tipp: két ciklusra lesz szükség, ebből egyik a másikon belül lesz.


Hogy kell egy sorba x db csillagot kiiratni? A két ciklus OK, de minden csillagom új sorba került. Kissé belekavarodtam...


A "minek álltam neki", "ne ezt és ne így" stb. "segítséget" kérlek tartsátok meg! Köszönöm! :)


2018. dec. 13. 17:49
 1/8 anonim ***** válasza:

1. Inicializálsz egy üres sztring változót

2. Végigmész a tömbön.

3. A tömb adott elemét megszorzod a csillag karakterrel - ez megadja a mintát (szóval 8 * "*" = "********")

4. Ezt hozzáadod az 1. pontban említett sztringhez.

5. Meg egy szóközt.

6. Majd a végén eltávolítod a felesleges szóközt a sztring végéről (strip)


Lehetne funkcionális módon is (map), majd összeilleszteni (join).

2018. dec. 13. 18:01
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

Ezer köszönet, nem mindent értettem, de sikerült (kicsit rovidebb listával):


lista = [0,2,4,8,4,2]

i="*"

n=0

for n in range (0,6):

print lista[n]*i

n=n+1



Biztos van szebb megoldás, de én nagyon boldog vagyok :)))

2018. dec. 13. 18:37
 3/8 anonim ***** válasza:

values = [0, 2, 4, 8, 4, 2, 1] -> list értékekkel

stars = [] -> üres lista létrehozása


for value in values: -> for ciklussal végigmész a lista elemein

stars.append('*' * value) -> a stars listához hozzáadod a szám szorozva * stringet, a szintaktikának olvass utána


line_of_stars = ' '.join(stars) -> így fűzöd össze egy darab stringgé a stars lista elemeit, amik szóközzel vannak elválasztva

print(line_of_stars) -> kinyomtatod


A kódodra reagálva kérdező pár elég fontos dolog és meg kéne ismerkedj előbb a clean code elvekkel:

1) változónak csak angol nevet adunk

2) értelmes nevet adunk, nem i meg n meg társai. A values listában value-kon iterálsz végig

3) semmi értelme az in range-n végigmenni, a lista elemein kell végigmenni

4) for ciklusban értelmetlen az n=n+1n mert ez a ciklus lényege, hogy automatikusan lépkedjen tovább

5) ha már valahol n-et növelni akarod, arra ez a szép megoldás n += 1, de for ciklusnál ezt felejtsd el

6) az első válaszadó tök jó megoldást írt, te full nem azt csináltad :D

2018. dec. 13. 20:06
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
Ja amúgy a hisztogram lényege meg pont az lenne, hogy ne egy sorba írasd ki :'D
2018. dec. 13. 20:10
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:

#3: Jó, bár pár szőrszálhasogatás:

"1) változónak csak angol nevet adunk"

Gyakorol, nem multinacionális csoportban dolgozik, szóval per pillanat lényegtelen.


"2) értelmes nevet adunk, nem i meg n meg társai."

Ciklusváltozó nevének nyugodtan használhatna "i"-t (ott még el lehet tekinteni az értelmes nevektől), de egyébként tényleg jobbak a beszédes nevek.


"3) semmi értelme az in range-n végigmenni, a lista elemein kell végigmenni"

Ha már ragaszkodik az "in range"-hez, akkor lényegre törőbb:

for i in range(0,len(lista)):


de minden esetre egyszerűbb:

for ertek in lista:

és akkor az "ertek"-változót már közvetlenül használhatja a csillagok számához.

2018. dec. 13. 20:47
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:

Nem rétek veled egyet, berögzül neki hibásan, hogy elnevezi minden hülyeségnek ahelyett, hogy adna változóknak/adatstruktúráknak értelmes, beszédes nevet.

Így is-úgyis el kell nevezni, akkor minek elsőre már valami "hülyeséget" adni?

A másik meg, a listának nem az indexei kellenek neki, hanem az elemeken kell végigmennie. Az meg for value in values

Lehet persze i-nek meghagyni a segédváltozót, csak mikor már egy nested listán menne végig pl vagy már a sokadig loopot írja, nagyon nem beszédes az 'i' sem. A values lista elemein megy végig, amik midnegyike egy value.

2018. dec. 13. 21:26
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:

Köszi a kommenteket, mindegyikből tanultam! :)

Tudtok ajánlani Python leirást, amiből tanulhatok? Netről ollózva is erdekes, csak kimaradnak az alapok... :D

2018. dec. 14. 09:03
 8/8 anonim ***** válasza:

A teljesség igénye nélkül: pár magyr nyelvű könyv:

* [link]

vagy ha az aktív gyakorlás híve vagy, egy kurzus:

* [link]

2018. dec. 14. 10:17
Hasznos számodra ez a válasz?

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!