MENÜ

Honlap címe

Előző - #24 15 percenként | Tartalomjegyzék | Következő - #26 Kézfogás

25. GYAKORLAT: SZORZÓTÁBLA

A szorzótábla elsajátítása gyermekkori matematikai oktatásunk korai része. A szorzótábla két egyjegyű szám minden szorzatát mutatja. Ebben a gyakorlatban egy szorzótáblát nyomtatunk a képernyőre beágyazott forhurkok és néhány karakterlánc-manipuláció segítségével az oszlopok helyes igazítása érdekében.

Gyakorlat leírása

Írjon egy programot, amely egy szorzótáblát jelenít meg, amely így néz ki:

  | 1 2 3 4 5 6 7 8 9 10

--+-------------------------------

 1| 1 2 3 4 5 6 7 8 9 10

 2| 2 4 6 8 10 12 14 16 18 20

 3| 3 6 9 12 15 18 21 24 27 30

 4| 4 8 12 16 20 24 28 32 36 40

 5| 5 10 15 20 25 30 35 40 45 50

 6| 6 12 18 24 30 36 42 48 54 60

 7| 7 14 21 28 35 42 49 56 63 70

 8| 8 16 24 32 40 48 56 64 72 80

 9| 9 18 27 36 45 54 63 72 81 90

10|10 20 30 40 50 60 70 80 90 100

A felső és a bal oldalon lévő számcímkék a szorozandó számok, és ahol az oszlop és a sor metszi egymást, az ezeknek a számoknak a szorzata. Figyelje meg, hogy az egyjegyű számok szóközökkel vannak kitöltve, hogy ugyanabban az oszlopban legyenek igazítva. rjust() A kitöltés biztosításához használhatja a Python karakterlánc-metódusát. Ez a metódus egy karakterláncot ad vissza szóköz karakterekkel a bal oldalon, hogy jobbra igazítsa a szöveget, és a Megoldástervezés szakasz elmagyarázza ennek működését.

A táblázat felső oldalán lévő vonal mínuszjelből áll. A bal oldali vonal függőleges csőkarakterekből áll (a billentyűzet Enter billentyűje felett). A metszéspontjukat plusz tábla jelzi. A megoldás akkor helyes, ha a kimenet megegyezik a szorzótábla fenti szövegével. print()A táblázat tetején található számcímkék és sorok egyszerű felhívását is használhatja . A szorzótábla szövegét azonban ne kódolja beprint() a programjába: a programnak többnek kell lennie, mint egy csomó hívásnak.

Próbáljon megoldást írni a leírásban szereplő információk alapján. Ha továbbra is problémái vannak ennek a gyakorlatnak a megoldásával, további tippekért olvassa el a Megoldástervezés és a Különleges esetek és Gotchák című részt.

Előfeltételek: print(), for ciklusok, range()két argumentummal, endkulcsszó argumentum a print() , rjust(), str() számára

Megoldás tervezése

A program első részében nyomtassa ki a vízszintes számcímkéket és az elválasztó vonalat. Ezt a két sort közvetlenül programozhatja két print() hívással:

print(' | 1 2 3 4 5 6 7 8 9 10')

print('--+------------------------------')

Ne feledje, hogy megfelelő mennyiségű szóközt kell hagynia a számok között, hogy a szorzótábla oszlopai sorba kerüljenek. Minden számot úgy kezelhet, mintha két számjegy lenne. Az egyjegyű számok bal oldalukon szóközt kell nyomtatni, jobbra igazítva a karakterláncot. A Python rjust()karakterlánc-metódusa megteheti ezt helyetted. Írja be a következőket az interaktív shellbe:

>>> '42'.rjust(4)  # Két szóközt ad hozzá.

'42'

>>> '042'.rjust(4)  # Egy szóközt ad hozzá.

'042'

>>> '0042'.rjust(4)  # Nulla szóközt ad hozzá.

'0042'

Figyeljük meg, hogy az rjust(4) hívásból visszaadott összes karakterlánc négy karakter hosszú. Ha az eredeti karakterlánc négynél rövidebb, a rjust() metódus szóközt helyez a visszaadott karakterlánc bal oldalára, amíg az négy karakter hosszú lesz.

A szorzótábla kinyomtatásához két egymásba ágyazott for ciklus ismételhet minden szorzatot. A legkülső for ciklus az egyes sorok számain, a legbelső forciklus pedig az aktuális sor egyes oszlopainak számain ismétlődik. Nem szeretné, hogy minden termék után újsor jelenjen meg, hanem csak minden terméksor után. A Python print() függvénye automatikusan újsort ad az átadott karakterlánc végéhez. Ennek letiltásához adjon meg egy üres karakterláncot a end kulcsszó argumentumához, például print('Some text', end='').

A kód egyszerűsített változata így nézne ki:

>>> a tartomány (1, 11) sorához:

... az (1, 11) tartomány oszlopához:

... print(str(sor * oszlop) + ' ', end='')

... print()  # Újsor nyomtatása.

...

1 2 3 4 5 6 7 8 9 10

2 4 6 8 10 12 14 16 18 20

3 6 9 12 15 18 21 24 27 30

4 8 12 16 20 24 28 32 36 40

5 10 15 20 25 30 35 40 45 50

6 12 18 24 30 36 42 48 54 60

7 14 21 28 35 42 49 56 63 70

8 16 24 32 40 48 56 64 72 80

9 18 27 36 45 54 63 72 81 90

10 20 30 40 50 60 70 80 90 100

Az Ön megoldásában ezeket a termékeket megfelelően igazítani kell, valamint a számcímkéket a felső és a bal oldalon.

Különleges esetek és Gotchák

A legegyszerűbb hiba az, ha rossz a kitöltés mennyisége, ami azt eredményezi, hogy az oszlopok már nincsenek igazítva. Például, ha nem tölti be az egyszámjegyű szorzatokat egy extra szóköz karakterrel, a szorzótábla úgy néz ki, mint az előző szakasz rosszul igazított táblázata.

Most próbáljon meg egy megoldást írni az előző szakaszok információi alapján. Ha továbbra is problémái vannak a gyakorlat megoldásával, olvassa el a Megoldássablon részt további tippekért.

Megoldás sablon

Try to first write a solution from scratch. But if you have difficulty, you can use the following partial program as a starting place. Copy the following code from https://invpy.com/multiplicationtable-template.py and paste it into your code editor. Replace the underscores with code to make a working program:

# Print the heading of each column:

print('  | 1  2  3  4  5  6  7  8  9 10')

print('--+------------------------------')

 

# Loop over all numbers from 1 to 10:

for column in range(____, ____):

    # Print the number label on the right side:

    print(str(____).rjust(____) + '|', end=____)

 

    # Loop over all numbers from 1 to 10:

    for row in range(____, ____):

        # Print the product, padded to two digits, followed by a space:

        print(str(____).rjust(____) + ' ', end=____)

    # After the loop, print a newline to end the row:

    ____()

The complete solution for this exercise is given in Appendix A and https://invpy.com/multiplicationtable.py. You can view each step of this program as it runs under a debugger at https://invpy.com/multiplicationtable-debug/.

Further Reading

A similar multiplication table project is also used in the free book, The Big Book of Small Python Projects, as Project #49 at https://inventwithpython.com/bigbookpython. If you are interested in chemistry, that book also has a project that displays the periodic table of elements.

Prev - #24 Every 15 Minutes | Table of Contents | Next - #26 Handshakes

 

Asztali nézet