Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

Info házi, phyton programozás

53
köszönöm előre is :)

Írjunk egymás mellé 10 csillagot („*”) úgy, hogy a programkódban csak egyetlen csillag karakter legyen!

Írjunk szorzótáblát a kicsiknek! A várt kimenet:
1 * 1 = 1
1 * 2 = 2

6 * 6 = 36
6 * 7 = 42

10 * 9 = 90
10 * 10 = 100
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Középiskola / Informatika

Válaszok

1
> Írjunk egymás mellé 10 csillagot („*”) úgy, hogy a programkódban csak egyetlen csillag karakter legyen!

Ha a feladat szerzője az „egyetlen csillag karakter” kikötéssel azt akarta elérni, hogy a feladatot ne lehessen úgy megoldani, hogy egy csillag karaktert tartalmazó karakterláncot szorzol egész számmal:

print('*' * 10)

Akkor gyenge volt a kikötése, mert a fentit tök egyszerű úgy átírni, hogy csak egyetlen csillag legyen benne:

print('*'.__mul__(10))

Vagy:

print(chr(42) * 10)

Illetve a fenti 2 megoldást összevonva megoldható csillag nélkül is:

print(chr(42).__mul__(10))

Persze az ismétlés elérhető formázás útján is:

print(''.ljust(10, '*'))

Ami metódushívás nélkül is megoldható, simán formátum leírással:

print(f'{ "" :*<10}')

Persze ha még kezdők vagyunk Python programozásban akkor is meg lehet oldani csillag nélkül, csak kevésbé elegánsan:

print(chr(42) + chr(42) + chr(42) + chr(42) + chr(42) + chr(42) + chr(42) + chr(42) + chr(42) + chr(42))

De ha karakter kódot használunk, akkor már inkább így:

print('\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a')

Ha tényleg a szorzás használatát akarták kizárni, inkább ismétlő utasítás használatát kellett volna szorgalmazzák:

for _ in range(10):
    print('*', end = '')
print()

Amit persze list comprehension segítségével rövidebben is leírhatunk:

print(''.join(['*' for _ in range(10)]))

Vagy ha a csillag karaktert elhasználjuk unpackinghez, akkor a kiírandó karakter kódját is használhatjuk:

print(*['\x2a' for _ in range(10)], sep = '')



> Írjunk szorzótáblát a kicsiknek! A várt kimenet:

A várt kimenetből úgy tűnik a szorzandókat és a szorzatot nem kell oszlopokba igazítani.

for i in range(1, 10 + 1):
    for j in range(1, 10 + 1):
        print(i, '*', j, '=', i * j)
Módosítva: 2 hónapja
0