Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def volumes(tuple):
- alfabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
- plaatsalfabet = 0 # de plaats van het alfabet houdt bij waar we zitten in het alfabet als men de cijfers afgaat,
- # als men 4 heeft gehad als element v tuple moet men niet terug beginnen bij 0 maar verdertellen vanaf de laatste letter
- eindlijst = []
- if type(tuple) == int:
- raise AssertionError('ongeldige opdeling') # als de tuple eig een int is
- for _ in tuple:
- if type(_) != int: # als element van tuple geen getal is
- raise AssertionError('ongeldige opdeling')
- if _ <= 0: # als getal v tuple kleiner is dan 0
- raise AssertionError('ongeldige opdeling')
- if sum(tuple) != 26: # als som vd getallen niet 26 is
- raise AssertionError('ongeldige opdeling')
- else:
- for _ in tuple:
- eersteletter = alfabet[plaatsalfabet]
- laatsteletter = alfabet[plaatsalfabet + _ - 1] # +1 want men begint te tellen op 0 in python
- if eersteletter == laatsteletter: # in het geval dat men "p-p" krijgt moet men gewoon "p" krijgen
- eindlijst.extend((eersteletter, ' '))
- else:
- eindlijst.extend((eersteletter, '-', laatsteletter, ' '))
- plaatsalfabet += _ # +2 want men neemt de volgende letter
- eindlijst.pop(-1) # laatste spatie op het einde wegdoen
- eindlijst = ''.join(eindlijst)
- return eindlijst
- def aantallen(string):
- """"
- >>> aantallen('A-G H-O P Q-Z')
- (7, 8, 1, 10)
- """
- alfabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
- assertionlijst = [] # lijst die nodig is om te kijken dat alle letters mekaar alfabetisch opvolgen
- if not isinstance(string, str): # als de input geen string is
- raise AssertionError('ongeldige opdeling')
- if string[0] != 'A' or string[-1] != 'Z':
- raise AssertionError('ongeldige opdeling')
- string_list = list(string) # kijken ofdat de letters voor en na de spatie mekaar alfabetisch opvolgen
- for _ in string_list:
- if _ in ' ':
- voorspatie = string_list[string_list.index(_) - 1]
- naspatie = string_list[string_list.index(_) + 1]
- if ord(voorspatie) + 1 != ord(naspatie):
- raise AssertionError('ongeldige opdeling')
- else:
- string_list.pop(string_list.index(
- _)) # we poppen de 'gebruikte' spatie want anders ga je telkens terug gaan naar de spatie die men eerst tegenkomt bij de volgende spatie
- combo = [] # lijst waar x-y in gaat
- eindlijst = []
- for _ in string:
- if _ not in ' ':
- combo.append(_)
- else:
- eersteletter = combo[0]
- laatsteletter = combo[-1]
- indexeersteletter = alfabet.index(eersteletter)
- indexlaatsteletter = alfabet.index(laatsteletter)
- getal = indexlaatsteletter - indexeersteletter + 1 # getal dat wordt toegevoegd aan tuple
- eindlijst.append(getal)
- combo = []
- eersteletter = combo[
- 0] # deze blok doen we nog een laatste keer want op het einde van de string staat er geen spatie om de bewerking door te laten gaan
- laatsteletter = combo[-1]
- indexeersteletter = alfabet.index(eersteletter)
- indexlaatsteletter = alfabet.index(laatsteletter)
- getal = indexlaatsteletter - indexeersteletter + 1 # getal dat wordt toegevoegd aan tuple
- eindlijst.append(getal)
- combo = []
- return tuple(eindlijst)
- def delta(opdeling, namen):
- """
- >>> delta('A B C-I J K-L M-N O P Q-Y Z', [18, 1, 30, 48, 29, 49, 44, 45, 8, 35, 48, 7, 31, 31, 34, 44, 19, 39, 3, 42, 4, 5, 6, 15, 22, 11])
- 548.8
- """
- lijstsum = [] # hier gaan alle opgetelde letterintervallen in
- if isinstance(opdeling, int): #als je opdeling een int is
- raise AssertionError('ongeldige opdeling')
- if isinstance(opdeling[0], int): # als de opdeling bestaat uit cijfers
- opdeling = volumes(opdeling)
- if opdeling[0] != 'A' or opdeling[-1] != 'Z':
- raise AssertionError('ongeldige opdeling')
- if isinstance(opdeling, str):
- string_list = list(opdeling) # kijken ofdat de letters voor en na de spatie mekaar alfabetisch opvolgen
- for _ in string_list:
- if _ in ' ':
- voorspatie = string_list[string_list.index(_) - 1]
- naspatie = string_list[string_list.index(_) + 1]
- if ord(voorspatie) + 1 != ord(naspatie):
- raise AssertionError('ongeldige opdeling')
- else:
- string_list.pop(string_list.index(
- _)) # we poppen de 'gebruikte' spatie want anders ga je telkens terug gaan naar de spatie die men eerst tegenkomt bij de volgende spatie
- opdeling = list(opdeling)
- alfabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
- combo = []
- for _ in opdeling:
- if _ not in ' ':
- combo.append(_)
- else:
- eersteletter = combo[0]
- laatsteletter = combo[-1]
- indexeersteletter = alfabet.index(eersteletter)
- indexlaatsteletter = alfabet.index(laatsteletter)
- lijstsum.append(sum(namen[indexeersteletter:(indexlaatsteletter+1)]))
- combo = []
- eersteletter = combo[0]
- laatsteletter = combo[-1]
- indexeersteletter = alfabet.index(eersteletter)
- indexlaatsteletter = alfabet.index(laatsteletter)
- lijstsum.append(sum(namen[indexeersteletter:(indexlaatsteletter + 1)]))
- combo = []
- gemiddeld = sum(namen) / (opdeling.count(' ') + 1) # aantal - in opdeling is aantal volumes
- deltaa = 0
- for _ in lijstsum:
- deltaa += abs(_ - gemiddeld)
- return deltaa
- if __name__ == '__main__':
- import doctest
- (doctest.testmod())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement