3 svar
247 visningar
Dcbest01 behöver inte mer hjälp
Dcbest01 66
Postad: 20 sep 2019 10:31

Phyton if-sats

Uppgift:

Vid näthandel eviljer en del företag betalning mot faktura. De gör då en snabb koll mot vissa databaser för att se om kunden är kreditvärdig. Vanliga kriterier för att få fakturabetalning är att man är 18 år, har en årsinkomst på minst 120 tusen brutto samt att man inte har några kreditanmärkningar. 

Gör ett program som frågar efter ålder, årsinkomst samt ev. kreditanmärkningar, så fort man inte uppfylller ett krav ska man få bakslag och nästa fråga ska då alltså inte frågas"

Detta är min kod:

 

alder= int(input("Hur gammal är du?"))
if alder >= 18:
arsinkomst=int(input("Vad är din årsinkomsti kr?(brutto)"))
if arsinkomst >= 120000:
anmärkning = str(input("har du någon kreditanmärkning JA eller NEJ"))
if anmärkning == "NEJ" or "nej" or "Nej":
print("Fakturabetalning beviljad")
print()
if alder < 18 or arsinkomst < 120000 or anmärkning == "JA" or "ja" or "Ja":
print("Du har inte blivit beviljad")

problemet är att den alltid skriver "Du är inte beviljad även om man uppfalt alla krav"

Vad är fel?

viktorzenk 190
Postad: 20 sep 2019 10:57

Hej!

Har ingen super-erfarenhet af python, men av programmering i allmänhet. Jag kan tänka mig att uttrycket

anmärkning == "JA" or "ja" or "Ja"

orsakar problemet. Testa att skriva om det till:

anmärkning == "JA" or anmärkning == "ja" or anmärkning == "Ja"

Dcbest01 66
Postad: 20 sep 2019 12:51

Tack funkar nu :D

viktorzenk 190
Postad: 20 sep 2019 13:02

Toppen! Gör ett försök att förklara varför också:

anmärkning == "JA" or "ja" or "Ja"

tolkas som

(anmärkning == "JA") or ("ja") or ("Ja")

När en sträng omvandlas till en bool (true/false), tolkas vanligen tomma och odefinierade strängar som "false", och strängar med innehåll till "true". Uttrycken "ja", och "Ja" kommer alltså tolkas som true, och då blir ju hela logiska uttrycket med "or" emellan också sant.

Svara
Close