Python Cursus. Hoofdstuk 7 - Iteraties Gemengde Opgaven: While en For-loop
Uitwerkingen Gemengde Opgaven
Terug naar de uitleg en gewone opgaven over For-loopsTerug naar de uitleg en gewone opgaven over While-loops
Terug naar de cursus pagina
Gemengde opgave 7.0 Kleurrijke Spirograaf
import turtle import random #GLOBALE VARIABELEN kleurenlijst = ["red", "green", "yellow", "blue"] #HOOFDPROGRAMMA turtle.pendown() turtle.speed(100) #iets sneller laten tekenen grootte = 200 while grootte > 10: kleur = random.choice(kleurenlijst) turtle.pencolor(kleur) turtle.forward(grootte) turtle.right(65) grootte -= 1 #grootte steeds met 1 kleiner maken turtle.done()
Gemengde opgave 7.1a Letters gemeen
woord1 = input( "Geef woord 1: " ) woord2 = input( "Geef woord 2: " ) letters_gemeen = "" #om gemeenschappelijke letters in op te slaan for letter in woord1: if (letter in woord2): if (letter not in letters_gemeen): #was nog niet gevonden print( "Letter", letter, "zit in beide woorden" ) letters_gemeen += letter #voeg toe
Afsluitende opgave 7.1b Aantal letters gemeen
Zonder functies:
woord1 = input( "Geef woord 1: " )
woord2 = input( "Geef woord 2: " )
letters_gemeen = ""
for letter in woord1:
if (letter in woord2) and (letter not in letters_gemeen):
letters_gemeen += letter
if letters_gemeen == "":
print( "De woorden hebben geen tekens gemeen." )
else:
print( "De woorden delen de volgende tekens:", letters_gemeen )
of met gebruik van functies:
#FUNCTIE DEFINTIE
# de functie gemeen krijgt twee strings als parameters.
# Het retourneert het aantal tekens dat de strings gemeen hebben.
def bepaalLettersGemeen( woord1, woord2 ):
tekens_overeenkomstig = ""
for letter in woord1:
if (letter in woord2) and (letter not in tekens_overeenkomstig):
tekens_overeenkomstig += letter
aantal_tekens_overeenkomstig = len( tekens_overeenkomstig )
return aantal_tekens_overeenkomstig
#HOOFDPROGRAMMA
#gebruiker om invoer vragen
ingevoerdeWoord1 = input( "Geef woord 1: " )
ingevoerdeWoord2 = input( "Geef woord 2: " )
aantal_letters_gemeen = bepaalLettersGemeen( ingevoerdeWoord1, ingevoerdeWoord2 )
#geef feedback aan gebruiker
if aantal_letters_gemeen <= 0:
print( "De woorden delen geen tekens." )
elif aantal_letters_gemeen == 1:
print( "De woorden hebben 1 teken gemeen." )
else:
print( "De woorden hebben", aantal_letters_gemeen, "tekens gemeen." )
Gemengde opgave 7.2 Zessen tellen
#Opgave Zessen tellen
#random library importeren:
import random
#invoer vragen:
invoer = input("Hoeveel dobbelstenen? ")
aantal = int( invoer )
#teller voor aantal zessen aanmaken:
zessen_teller = 0
#loop om alle dobbelstenen gooien:
for i in range (0, aantal):
#losse worp met een dobbelsteen:
dobbel = random.randint(1,6)
#checken of het een 6 is
if dobbel == 6:
zessen_teller = zessen_teller + 1
# de loop is klaar, dus we kunnen ons antwoord afdrukken:
print ( "Het aantal zessen in", aantal, "worpen was:", zessen_teller )
Gemengde opgave 7.3 Tafel van vermenigvuldiging
# Tafel van vermenigvuldiging.
num = 3
#druk de bovenste rij af
print(". |", end=" ")
for teller in range(1, num+1):
print(teller, end=" ")
print()
for teller1 in range(1, num+1):
print (teller1, "|", end=" ") #druk de getallen links af
for teller2 in range(1, num+1):
antwoord = teller1 * teller2
print (antwoord, end=" ") #druk de antwoorden af
print()
Gemengde opgave 7.4 Hoger-Lager
import random
te_gokken_getal = random.randint (0, 100)
keren_gegokt = 0
goed_gegokt = False
while goed_gegokt == False:
invoer = input( "Gok een getal tussen 0 en 100" )
gok = int( invoer )
if gok < 0:
print("Invoer moet minstens 0 zijn")
elif gok > 100:
print("Getal is kleiner of gelijk aan 100")
elif gok == te_gokken_getal:
print("GOED GERADEN!")
goed_gegokt = True
elif gok < te_gokken_getal:
print("HOGER!")
else:
print("LAGER!")
keren_gegokt +=1
print("Je hebt al", keren_gegokt, "keren gegokt.")
print("Spel afgelopen.")
Gemengde opgave 7.5 Omgekeerde van Hoger-Lager
gemaakte_pogingen = 0
laagste = 0
hoogste = 1001
MAX_POGINGEN = 10
print( "Denk aan een getal tussen 1 en 1000." )
while gemaakte_pogingen < MAX_POGINGEN :
computer_gok = int( (laagste + hoogste) / 2 )
prompt = "Ik raad "+str( computer_gok )+". Is jouw getal"+\
" (L)ager of (H)oger, of is dit (C)orrect? "
antwoord = input( prompt )
gemaakte_pogingen += 1
print("Poging nummer: ", gemaakte_pogingen)
if antwoord == "C":
break
elif antwoord == "L":
hoogste = te_gokken_getal
elif antwoord =="H":
laagste = te_gokken_getal
else:
print( "Antwoord H, L, of C." )
if laagste >= hoogste-1:
print( "Je moet een fout gemaakt hebben,",
"want je hebt gezegd dat het getal hoger is dan",
laagste, "maar ook lager dan", hoogste )
if gemaakte_pogingen == 1:
print( "In 1 keer geraden! Ik kan gedachten lezen!" )
elif gemaakte_pogingen == MAX_POGINGEN:
print( "In", MAX_POGINGEN, "nog niet geraden... niet echt zo's slim programma!" )
else:
print( "Ik moest", teller, "keer raden." )
Gemengde opgave 7.6 Priemgetal testen
invoer = input ( "Geef een nummer: " )
getal = int( invoer )
if getal < 2:
print( getal, "is niet priem" )
else:
i = 2
delerGevonden = False
while i < getal and delerGevonden == False:
if getal%i == 0:
print( getal, "is niet priem" )
delerGevonden = True
i += 1
if delerGevonden == False:
print( getal, "is priem" )
Afsluitende opgave 7.7 Spelbord
import turtle
#CONSTANTEN EN VARIABELEN:
BOARD_SIZE = 3
CELL_SIZE = 100
#FUNCTIE DEFINITIES:
#tekent een rechthoek
def drawSquare( CELL_SIZE ):
for i in range(4):
turtle.forward( CELL_SIZE )
turtle.right(90)
#tekent een vierkant bord met formaat bord_size * bord_size
def drawBord( BOARD_SIZE ):
for column_nr in range ( BOARD_SIZE ):
for row_nr in range (BOARD_SIZE ):
turtle.goto( CELL_SIZE*column_nr, -CELL_SIZE*row_nr )
turtle.pendown()
drawSquare( CELL_SIZE )
turtle.penup()
#FUNCTIE AANROEPEN:
drawBord( BOARD_SIZE )
turtle.done()
Gemengde opgave (OPTIONEEL) 7.8 Fibonacci
# Fibonacci.
#invoer vragen:
fibgetal = int( input("Tot hoeveel Fibonacci getallen moet ik uitrekenen? "))
# als de invoer 1 of 2 is, kunnen we de lijst rechtstreeks afdrukken.
# pas bij hogere invoer hoeven we te rekenen
if fibgetal == 1:
print ("1")
elif fibgetal == 2:
print ("1 1")
else:
#voor gevallen > 2 moeten we gaan rekenen:
#de aanpak is als volgt:
# - we maken een startlijst met de eerste 2 fibonaccigetallen
# - we maken een loop die steeds het volgende fibonaccigetal uitrekent en aan de lijst toevoegt
# - als de loop voorbij is, drukken we de lijst op het scherm af
#startlijst met de 1e 2 fibonaccigetallen:
fiblijst = [1, 1]
#bijhouden hoeveel fibonaccigetallen we al hebben berekend
#deze begint op 2, omdat we de eerste 2 getallen al in de lijst hebben gestopt
stap = 2
#de loop die de volgende fibonaccigetallen gaat uitrekenen:
while stap < fibgetal:
#het nieuwe getal is de som van de laatste 2 elementen van de lijst
#bepaal eerst de lengte van de lijst
lengte = len(fiblijst)
#bereken het nieuwe getal door de achterste twee elementen bij elkaar op te tellen:
nieuw_fib = fiblijst[lengte-2] + fiblijst[lengte-1]
#voeg het nieuwe getal achteraan de lijst
fiblijst.append(nieuw_fib)
#niet vergeten de stap te verhogen!
stap = stap + 1
#De lijst is nu gevuld, dus die hoeven we alleen nog af te drukken:
for element in fiblijst:
print (element, end="")#door de end="" op het einde, blijven we op dezelfde afdrukregel
Terug naar de uitleg en gewone opgaven over For-loops
Terug naar de uitleg en gewone opgaven over While-loops
Terug naar de cursus pagina