Kezdőoldal » Számítástechnika » Programozás » Python feladat megoldás?

Python feladat megoldás?

Figyelt kérdés

Írjon ki egy programot ami kiírja a 7-as szorzótábla első 20 tagját, csillaggal jelölve azokat, amelyek a 3 többszörösei

Példa: 7 14 21 * 28 35 42 * 49


Konkrét kód még nincs de az elképzelés:

# 7-es szorzótábla kiírása az 140ig

szorzotabla = 0

while szorzotabla < 140:

szorzotabla = szorzotabla + 7

print szorzotabla,



Ez ügye kiírja egymás mellé 7-től 140-ig.

Ahoz, hogy csillagot tegyek a 3 többszöröseihez kellene egy if. Erre gondoltam:

#leírjuk az előzőt és a while blokkon belül:

if szorzotabla%3==0:

print "*"



De ez így nem jó. Nem kell a konkrét kód, elég ha pszeudoban leírjátok :D

Köszönöm :)



2016. febr. 13. 19:08
 1/5 A kérdező kommentje:
Vagyis sikerül a fenti kód csak nem egymás mellé hanem egymás alá Írja. Ha a szorzotabla mögé teszek egy , jelet akkor egymás mellé rakja de ha egy szám végre a 3 többszöröse akkor kirak egy *-ot és folytatja a következő sorban
2016. febr. 13. 19:12
 2/5 anonim ***** válasza:
100%

Egy megoldás ha nem külön printet használsz csak a * kiírásához:


if szorzotabla%3==0:

print szorzotabla, "*", # csillaggal írja ki a számot

else

print szorzotabla, # csillag nélkül írja ki a számot


Úgy tudsz Python2-ben kiírni valamit printtel soremelés nélkül ha utána írsz egy vesszőt:


print "*", # ez kiírja hogy * de nem ugrik a következő sorba

print "*" # vessző nélkül sort elemel a kiírás után


Azaz a problémát megoldja ha vesszővel írod azt hogy:

if szorzotabla%3==0:

print "*", # <- VESSZŐ!!



Még egy jó tanács: A range és xrange harmadik paraméterének használatával:

for n in xrange(0, 140, 7): # 140-ig hetesével generálja le a számokat

print n,


Nem érdemes egyébként belekódolni hogy 140, elég hogy 20 és utána felszorzod:

for n in xrange(20):

print n*7,


Egy sorban pedig a feladat megoldása érdekességképpen:

print ' '.join(str(n*7) + '*'*(n%3==0) for n in xrange(20))

2016. febr. 13. 19:40
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

Egyelőre még csak a whilet és az ifet ismerem :D

De Köszi :)

2016. febr. 13. 19:45
 4/5 anonim ***** válasza:

Ha ez neked csak egy lecke, akkor ne olvass tovább, de ha szeretnél komolyabban foglalkozni a programozással, fogadj meg két tanácsot. Az egyik, hogy nem 140-ig kell kiírni, hanem az első húsz tagot. Ezt a feladatot jobban tükrözi, ha bevezetsz egy i nevű számlálót (ez a programozói hagyomány, hogy i-nek hívjuk, de nem kötelező), amit lenullázol, és a ciklus minden lépésében növelsz. A while feltételben ezt kell vizsgálni. Mert ennek a programnak arra is alkalmasnak kell lennie, hogy az első 13879 tagot írja ki, és ha jól van megírva, akkor két másodperc alatt javítod, és nem akarsz fejben szorozgatni, mikor a gép.


A másik, hogy a számot ne hívd szorzótáblának, mert ez megtévesztő. Legyen a neve szam vagy ilyesmi. A szorzótábla nem az egyes számokat jelenti, hanem az egész program eredményét. Amikor a programjaid már nem férnek ki sem egy, sem tíz képernyőre, majd érthető lesz, miért fontos olyan nevet választani, ami leírja a változó rendeltetését.

2016. febr. 14. 10:18
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:
100%

"Egy sorban pedig a feladat megoldása érdekességképpen:

print ' '.join(str(n*7) + '*'*(n%3==0) for n in xrange(20))

"

Ez nagyon pythonic! :D Tényleg mutatja, hogy milyen szép nyelv a python.

2016. febr. 14. 10:54
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!