MENÜ

Honlap címe

Előző - #23 99 Üveg sör | Tartalomjegyzék | Következő - #25 Szorzótábla

24. GYAKORLAT: 15 PERCENKÉNT

Az órák szokatlan számlálórendszerrel rendelkeznek az általunk ismert normál decimális számrendszerhez képest. Ahelyett, hogy 0-ról kezdenének, és örökké 1-re, 2-re és így tovább mennének, az órák 12-ről indulnak, és továbbmennek 1-re, 2-re és így tovább 11-ig. Ezután ismét visszalép 12-re. (Az órák elég furcsaak, ha belegondolunk: a 12 óra délelőtt 11 óra előtt jön, a 12 óra pedig este 23 óra előtt.) Ez kicsit bonyolultabb, mint egyszerűen felfelé mutató programot írni. Ehhez a gyakorlathoz beágyazott hurkokat kell használni fora percek, órák, valamint a nap délelőtti és délutáni felének áthaladásához.

Gyakorlat leírása

Készítsen programot, amely 12:00 és 23:45 között 15 percenként megjeleníti az időt. A megoldásnak a következő kimenetet kell produkálnia:

12:00 óra

12:15

12:30

12:45

1:00 óra

1:15

--vágott--

23:30

23:45

A teljes kimenetben 96 sor van.

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étel fogalmak: forciklusok, listák, egymásba ágyazott hurkok, karakterlánc-összefűzés

Megoldás tervezése

Ez a megoldás három egymásba ágyazott ciklus használatát igényli . A legkülső forhurok ismétlődik 'am'és 'pm'. A második forciklus tizenkét órán keresztül iterál, kezdve a következővel: '12', majd '1', majd '2', és így tovább egészen '11'. A harmadik forciklus 15 perces lépésekben iterálja a perceket: '00', '15', '30', és '45'. Vegye figyelembe, hogy az óra és a perc értékek karakterláncok, nem egész számok, mert össze kell kapcsolnunk őket a végső karakterláncunkkal, például: '12' + ':' + '00' + ' ' + 'am' kiértékeli a következőt:'12:00 am'

Megszokta, hogy fora ciklusok egész számok tartományában iterálnak a függvényből range(). De a Python forciklusai bármilyen értékek listáit át tudják ismételni. Például írja be a következőket az interaktív héjba:

>>> i-nek: ['Alice', 'Bob', 'Carol']:

... print('Hello' + i)

...

Szia Alice

Szia Bob

Szia Carol

A forciklus egy értéksorozaton át iterál. A következő interaktív shell-példa az i ekvivalense a range(4) tartományban :

>>> i in [0, 1, 2, 3]:

... print(i)

...

0

1

2

3

Ebben az esetben kifejezetten beírtuk az egész számokat a listában való iterációhoz, ahelyett, hogy a kényelmesebbet használnánk range(4). De ugyanazt az eredményt adják. És az egész számok explicit beírása egy listába rendkívül hosszúvá válik olyan nagy tartományok esetén, mint pl range(1000).

Különleges esetek és Gotchák

The order of the nested for loops is important. You want the innermost for loop to iterate over minutes, the next innermost to iterate over hours, and the outermost for loop to iterate over 'am' and 'pm'.

Now try to write a solution based on the information in the previous sections. If you still have trouble solving this exercise, read the Solution Template section for additional hints.

Solution Template

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/every15minutes-template.py and paste it into your code editor. Replace the underscores with code to make a working program:

# Loop over am and pm:

for meridiem in [____, 'pm']:

    # Loop over every hour:

    for hour in [____, '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']:

        # Loop over every 15 minutes:

        for minutes in ['00', ____, ____, '45']:

            # Print the time:

            print(____ + ':' + ____ + ' ' + ____)

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

Prev - #23 99 Bottles of Beer | Table of Contents | Next - #25 Multiplication Table

 

Asztali nézet