Python feladat megoldá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 :)
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))
Egyelőre még csak a whilet és az ifet ismerem :D
De Köszi :)
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.
"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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!