-
Notifications
You must be signed in to change notification settings - Fork 0
2023_2024_deeltoets_1
De opgaven kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2023-2024_Deeltoets_1.pdf
def bereken_golflengte(f):
lambda = 3e8 / f
return lambdaDe lokale variabele lambda is niet echt nodig:
def bereken_golflengte(f):
return 3e8 / fEen stap-voor-stap oplossing:
import math
def bereken_FSPL(d, f):
golflengte = bereken_golflengte(f)
FSPL = (4 * math.pi * d / golflengte) ** 2
return FSPLEen compacte oplossing:
import math
def bereken_FSPL(d, f):
return (4 * math.pi * d / bereken_golflengte(f)) ** 2Een stap-voor-stap oplossing:
d = int(input('Geef de afstand in meter: '))
f = int(input('Geef de signaalfrequentie in Hz: '))
FSPL = bereken_FSPL(d, f);
print('De FSPL is:', FSPL)Een compacte oplossing:
print('De FSPL is:', bereken_FSPL(int(input('Geef de afstand in meter: ')), int(input('Geef de signaalfrequentie in Hz: '))))Met een for-loop:
def FSPL_met_bandbreedte(afst, f1, f2):
for freq in range(f1, f2, 1000):
FSPL = bereken_FSPL(afst, freq)
print("frequentie:", freq, "FSPL:", FSPL)
FSPL_met_bandbreedte(3000, 10000, 20000)Met een while-loop:
def FSPL_met_bandbreedte(afst, f1, f2):
freq = f1
while freq < f2:
FSPL = bereken_FSPL(afst, freq)
print("frequentie:", freq, "FSPL:", FSPL)
freq = freq + 1000
FSPL_met_bandbreedte(3000, 10000, 20000)def fix_std_nr(lijst):
nieuwe_lijst = []
for nummer in lijst:
if nummer[0] == '9' or nummer[0] == '8':
nieuwe_lijst.append('0' + nummer)
else:
nieuwe_lijst.append(nummer)
return nieuwe_lijstDe voorwaarde van het if-statement kan ook korter geformuleerd worden:
def fix_std_nr(lijst):
nieuwe_lijst = []
for nummer in lijst:
if nummer[0] == '9' or '8':
nieuwe_lijst.append('0' + nummer)
else:
nieuwe_lijst.append(nummer)
return nieuwe_lijstDe voorwaarde van het if-statement kan ook anders geformuleerd worden:
def fix_std_nr(lijst):
nieuwe_lijst = []
for nummer in lijst:
if nummer[0] in ['9', '8']:
nieuwe_lijst.append('0' + nummer)
else:
nieuwe_lijst.append(nummer)
return nieuwe_lijstOmdat je met in ook in een string kan zoeken naar een karakter, kan de voorwaarde van het if-statement nog compacter worden:
def fix_std_nr(lijst):
nieuwe_lijst = []
for nummer in lijst:
if nummer[0] in '98':
nieuwe_lijst.append('0' + nummer)
else:
nieuwe_lijst.append(nummer)
return nieuwe_lijstEen alternatieve oplossing die niet geheel correct is omdat de originele lijst wordt aangepast (er wordt gevraagd om een nieuwe lijst terug te geven):
def fix_std_nr(lijst):
for i in range(len(lijst)):
if lijst[i][0] in ['9', '8']:
lijst[i] = '0' + lijst[i]
return lijstEen recursieve oplossing:
def fix_std_nr(lijst):
if len(lijst) == 0:
return []
if lijst[0][0] in ['9', '8']:
return ['0' + lijst[0]] + fix_std_nr(lijst[1:])
else:
return [lijst[0]] + fix_std_nr(lijst[1:])Een compacte oplossing:
def fix_std_nr(lijst):
return ['0' + nummer if nummer[0] in '98' else nummer for nummer in lijst]In het bovenstaande programma wordt gebruik gemaakt van list comprehension. Dit is niet behandeld in de les, maar wordt uitgelegd in paragraaf 19.2 van het boek.
Testcode:
studenten_lijst = ['951203', '863665', '1625532', '811553', '0902333', '0826254', '0913256', '0915464', '941663', '1363614']
nieuwe_studenten_lijst = fix_std_nr(studenten_lijst)
print(nieuwe_studenten_lijst)