Grundlagen Shell/Editor Codierung Variablen Datentypen Strings Arithmetik Fehler Sequenz Alternative Schleife StyleGuide
Pfad: Startseite / Fächer / Informatik / Python / Grundlagen / Schleife
Autor: mk
20.11.2011 15:47:58
2260
Schleife

Beispiel 1 - Strafarbeit

strafarbeit.jpg

Python 2.6

Strafarbeit p3.py
Welchen Wert hat die Variable n am Ende des Programms?

PAP Programmablaufplan

Python 3.2

# Autor: Klaus Merkert, 20.11.11

# Programmtitel
print('Strafarbeit')
print()

# Ausgabe

n = 1
while n <= 20:
    print(n,'. Ich darf meinen Lehrer nicht beißen!')
    n = n+1

Beispiel 2 - Countdown

Python 2.6

Countdown

Python 3.2

# Autor: Klaus Merkert, 20.11.11

# Einbindung einer Bibliothek
import time

# Programmtitel
print('Countdown')
print()

# Ausgabe
n = 10
while n > 0:
    print(n)
    n = n-1
    time.sleep(1)
print('Feuer!')

Information

In Python 3.2 hat die print-Funktion einen optionalen Parameter end, der defaultmäßig den Wert '\n' hat, also einen Zeilensprung bewirkt. Mit

print('*',end='')

wird z.B. ein '*' ausgegeben ohne dass ein Zeilensprung folgt.

Fingerübungen

Schreibe Programme f1.py, f2.py und f3.py, die folgende Zahlenfolgen ausgeben:

Schreibe ein Programm stern1.py, das eine natürliche Zahl n einliest und dann n Sternchen in einer Zeile ausgibt. Beispiel: n=7, Ausgabe: *******

Schreibe ein Programm stern2.py, das eine natürliche Zahl n einliest und dann Sternchen in ein Dreieck ausgibt. Beispiel: n=7, Ausgabe:

*
**
***
****
*****
******
*******

Hilfe: Zwei verschachelte Schleifen!

Aufgabe 1

Berechne die Summe der ersten n natürlichen Zahlen.

Beispiel für einen Programmlauf

Beispiel für Programmlauf

Aufgabe 2

Ermittle die Teilermenge T(n). Verwende für die Leerzeilen \n.

Beispiel für einen Programmlauf

Teilermenge

n = 24

T(24) = {1,2,3,4,6,8,12,24};

Zusatz: Wenn die Teilermenge nicht bestimmt werden kann, soll das durch eine Fehlermeldung angezeigt werden.

Aufgabe 3

Schreibe ein Programm prim1.py, das nach Eingabe einer natürlichen Zahl n angibt, ob n eine Primzahl ist.

Primzahltest

n = 17

17 ist eine Primzahl.

Aufgabe 4

Python 2.6

DezToBin

Python 3.2

# Autor: Klaus Merkert, 20.11.11

print('Umwandlung dezimal --> dual',end='\n\n')

n = int(input('n = '))

a = n        
b = ''
while a > 0:
    q = a//2
    r = a%2
    b = str(r)+b
    a = q

print('\n'+str(n)+'(10) = '+b+'(2)')

'Papierform' des Algorithmus

46 = 2 * 23 + 0     
23 = 2 * 11 + 1
11 = 2 * 5  + 1
5  = 2 * 2  + 1
2  = 2 * 1  + 0
1  = 2 * 0  + 1     --> 101110
---------------
0  = 2 * 0  + 0 

Shell

>>> bin(46)
'0b101110'

Aufgabe

Bestimme auf dem Papier die Binär-Darstellung von 5, 15, 18 und 38. Kontrolliere deine Ergebnisse mit Python.

Aufgabe 5

Vervollständige die Tracetabelle zu obigem Programm.

n    a    b        a>0    q    r
--------------------------------
46
     46
          ''
                   ja
                          23
                               0
          '0'
     23
                   ja
                          11
                               1
          '10'

Ergänze das Programm so durch print-Anweisungen, dass du deine Tabelle überprüfen kannst.

Aufgabe 6

Analysiere folgendes Programm. Für welche Eingaben gerät man in eine Endlosschleife (ohh!), wie kann man sie abbrechen?

Python 2.6

# -*- coding: iso-8859-1 -*-
# Autor: mk, Datum: 6.5.08

print "'Schleife des Grauens'\n"

n = input('n = ')

while True:
    print n
    if n%7 == 0: break

Python 3.2

# Autor: mk, 20.11.11

print("'Schleife des Grauens'",end='\n\n')

n = int(input('n = '))

while True:
    print(n)
    if n%7 == 0: break

Aufgabe 7

Analysiere folgendes Programm.

Teilermenge 2 teilermenge2.py

Aufgabe 8

Folgendes Programm zeigt den Unterschied zwischen import random und from random import * und die Erzeugung von Zufallszahlen.

Zufall 1

Erweitere das Programm so, dass die Anzahl der Sechsen gezählt und absolut und prozentual ausgegeben wird.

Links

Valid XHTML 1.0! lokal