geboortestenen bij de juiste maand zetten in python
- Berichten: 257
geboortestenen bij de juiste maand zetten in python
Beste,
Deze code die ik heb uitgewerkt lukt enkel voor de maand januari en februari vanaf een andere invoer is alles maart..
Ziet iemand wat ik verkeerd doe..
Of hoe het ook een beetje korter kan mss?
steen = input('geef hier de naam van de steen aub:')
if steen == 'granaat':
print('{} is een geboortesteen van de maand januari'.format(steen))
elif steen == 'amethist':
print('{} is een geboortesteen van de maand februari'.format(steen))
elif steen == 'bloedsteen' or 'aquamarijn':
print('{} is een geboortesteen van de maand maart'.format(steen))
elif steen == 'diamant' or 'kwarts':
print('{} is een geboortesteen van de maand april'.format(steen))
elif steen == 'smaragd' or 'chrysopraas':
print('{} is een geboortesteen van de maand mei'.format(steen))
elif steen == 'parel' or 'maansteen' or 'alexandriet':
print('{} is een geboortesteen van de maand juni'.format(steen))
elif steen == 'robijn' or 'carneool':
print('{} is een geboortesteen van de maand juli'.format(steen))
elif steen == 'sardonyx' or 'peridotiet' or 'spinel':
print('{} is een geboortesteen van de maand augustus'.format(steen))
elif steen == 'saffier':
print('{} is een geboortesteen van de maand september'.format(steen))
elif steen == 'opaal' or 'toermalijn':
print('{} is een geboortesteen van de maand oktober'.format(steen))
elif steen == 'topaas' or 'citrien':
print('{} is een geboortesteen van de maand november'.format(steen))
elif steen == 'turkoois' or 'zinkoon' or 'tanzaniet':
print('{} is een geboortesteen van de maand december'.format(steen))
else:
print('{} is een geboortesteen van de maand september of december'.format(steen))
Deze code die ik heb uitgewerkt lukt enkel voor de maand januari en februari vanaf een andere invoer is alles maart..
Ziet iemand wat ik verkeerd doe..
Of hoe het ook een beetje korter kan mss?
steen = input('geef hier de naam van de steen aub:')
if steen == 'granaat':
print('{} is een geboortesteen van de maand januari'.format(steen))
elif steen == 'amethist':
print('{} is een geboortesteen van de maand februari'.format(steen))
elif steen == 'bloedsteen' or 'aquamarijn':
print('{} is een geboortesteen van de maand maart'.format(steen))
elif steen == 'diamant' or 'kwarts':
print('{} is een geboortesteen van de maand april'.format(steen))
elif steen == 'smaragd' or 'chrysopraas':
print('{} is een geboortesteen van de maand mei'.format(steen))
elif steen == 'parel' or 'maansteen' or 'alexandriet':
print('{} is een geboortesteen van de maand juni'.format(steen))
elif steen == 'robijn' or 'carneool':
print('{} is een geboortesteen van de maand juli'.format(steen))
elif steen == 'sardonyx' or 'peridotiet' or 'spinel':
print('{} is een geboortesteen van de maand augustus'.format(steen))
elif steen == 'saffier':
print('{} is een geboortesteen van de maand september'.format(steen))
elif steen == 'opaal' or 'toermalijn':
print('{} is een geboortesteen van de maand oktober'.format(steen))
elif steen == 'topaas' or 'citrien':
print('{} is een geboortesteen van de maand november'.format(steen))
elif steen == 'turkoois' or 'zinkoon' or 'tanzaniet':
print('{} is een geboortesteen van de maand december'.format(steen))
else:
print('{} is een geboortesteen van de maand september of december'.format(steen))
- Berichten: 257
Re: geboortestenen bij de juiste maand zetten in python
Beste,katrien van den boss schreef:
Beste,
Deze code die ik heb uitgewerkt lukt enkel voor de maand januari en februari vanaf een andere invoer is alles maart..
Ziet iemand wat ik verkeerd doe..
Of hoe het ook een beetje korter kan mss?
steen = input('geef hier de naam van de steen aub:')
if steen == 'granaat':
print('{} is een geboortesteen van de maand januari'.format(steen))
elif steen == 'amethist':
print('{} is een geboortesteen van de maand februari'.format(steen))
elif steen == 'bloedsteen' or 'aquamarijn':
print('{} is een geboortesteen van de maand maart'.format(steen))
elif steen == 'diamant' or 'kwarts':
print('{} is een geboortesteen van de maand april'.format(steen))
elif steen == 'smaragd' or 'chrysopraas':
print('{} is een geboortesteen van de maand mei'.format(steen))
elif steen == 'parel' or 'maansteen' or 'alexandriet':
print('{} is een geboortesteen van de maand juni'.format(steen))
elif steen == 'robijn' or 'carneool':
print('{} is een geboortesteen van de maand juli'.format(steen))
elif steen == 'sardonyx' or 'peridotiet' or 'spinel':
print('{} is een geboortesteen van de maand augustus'.format(steen))
elif steen == 'saffier':
print('{} is een geboortesteen van de maand september'.format(steen))
elif steen == 'opaal' or 'toermalijn':
print('{} is een geboortesteen van de maand oktober'.format(steen))
elif steen == 'topaas' or 'citrien':
print('{} is een geboortesteen van de maand november'.format(steen))
elif steen == 'turkoois' or 'zinkoon' or 'tanzaniet':
print('{} is een geboortesteen van de maand december'.format(steen))
else:
print('{} is een geboortesteen van de maand september of december'.format(steen))
Ik heb het ondertussen al gevonden maar ik snap niet goed waarom ik er telkens steen == 'turkoois or steen == 'zirkoon' or..
moet voorzetten? en niet gewoon mag typen steen ==
-
- Berichten: 12.262
Re: geboortestenen bij de juiste maand zetten in python
Het is een eigenaardige eigenschap van python. Talen als c, perl, php en dergelijke hebben allemaal een switch/case/default systeem om te voorkomen dat je steeds de vergelijking moet herhalen achter een elseif, maar python kent dat concept niet.
Overigens doe je op het eind wel een soort 'default', als ik voor de variable steen '123123' definieer krijgt ik als antwoord december - wellicht ook niet helemaal wenselijk?
Overigens doe je op het eind wel een soort 'default', als ik voor de variable steen '123123' definieer krijgt ik als antwoord december - wellicht ook niet helemaal wenselijk?
Victory through technology
-
- Berichten: 7.072
Re: geboortestenen bij de juiste maand zetten in python
Code: Selecteer alles
elif steen == 'bloedsteen' or 'aquamarijn':
Code: Selecteer alles
elif (steen == 'bloedsteen') or ('aquamarijn'):
De aanpak is echter niet praktisch. Het is verstandiger om een 'dictionary' te gebruiken:
Code: Selecteer alles
def vindMaand(s):
return {
'granaat': 'januari',
'amethist': 'februari',
'bloedsteen': 'maart',
'aquamarijn': 'maart',
'diamant': 'april',
'kwarts': 'april',
'smaragd': 'mei',
'chrysopraas': 'mei',
'parel': 'juni',
'maansteen': 'juni',
'alexandriet': 'juni',
'robijn': 'juli',
'carneool': 'juli',
'sardonyx': 'augustus',
'peridotiet': 'augustus',
'spinel': 'augustus',
'saffier': 'september',
'opaal': 'oktober',
'toermalijn': 'oktober',
'topaas': 'november',
'citrien': 'november',
'turkoois': 'december',
'zinkoon': 'december',
'tanzaniet': 'december'
}.get(s, 'onbekend')
steen = input('geef hier de naam van de steen aub:')
print('{} is een geboortesteen van de maand {}'.format(steen, vindMaand(steen)))
-
- Berichten: 12.262
Re: geboortestenen bij de juiste maand zetten in python
Wat praktisch is is natuurlijk weer een ander punt. Alles in een array gooien, of in een database tabel, is soms ook wel handig. Het laatste zeker als je zoiets wilt uitbreiden zonder aan de code te hoeven sleutelen.
Victory through technology
- Berichten: 257
Re: geboortestenen bij de juiste maand zetten in python
Benm schreef: Wat praktisch is is natuurlijk weer een ander punt. Alles in een array gooien, of in een database tabel, is soms ook wel handig. Het laatste zeker als je zoiets wilt uitbreiden zonder aan de code te hoeven sleutelen.
Beste,
Alvast bedankt voor de respons! Dictionary hebben we nog niet geleerd maar dat zal wel nog komen! idd handiger om het zo op te lossen zodat ik niet moet copypasten heel de tijd..
ik snap alleen niet zo goed de .get(s, onbekend) onderaan?
Zou u dit nog kunnen uitleggen?
-
- Berichten: 7.072
Re: geboortestenen bij de juiste maand zetten in python
get(a, b) is een functie van een dictionary. Deze functie zoekt in het dictionary naar de 'key' die gelijk is aan a. Als deze gevonden wordt dan wordt teruggegeven wat er bij die key hoort. Als deze niet gevonden wordt dan geeft get() b terug. Dit doe ik dus om ervoor te zorgen dat de functie 'vindMaand()' altijd iets teruggeeft.
- Berichten: 257
Re: geboortestenen bij de juiste maand zetten in python
Okee super bedankt! Ik snap het!