5 svar
82 visningar
m83_11 85
Postad: 4 okt 23:46

loop, avbryter med enter

Hej!

uppgiften går ut på att skapa ett program som frågar efter lösenord, och man ska kunna avbryta loopen genom att bara trycka enter. Hur går jag tillväga?

såhär långt har jag kommit:

naytte 5151 – Moderator
Postad: 5 okt 00:14 Redigerad: 5 okt 00:16

Du kan göra en kontroll över om inputsträngen är tom eller inte. T.ex. så här:

psw = input("Enter password or click enter to exit: ")

while psw:
	if psw != "banan":
		psw = input("Enter password or click enter to exit: ")
	else:
		print("correct password")
		break

När du bara trycker på enter kommer "while psw" inte vara uppfyllt och då exekveras ingenting.

m83_11 85
Postad: 5 okt 02:54

Härligt!

Men varför exekveras inget när man har "while psw"?

naytte 5151 – Moderator
Postad: 5 okt 03:05 Redigerad: 5 okt 03:09

Om du trycker på enter direkt när programmet körs så kommer while-conditionet inte vara uppfyllt och då exekveras ingenting. Om du däremot skriver in något förutom "banan" och går in while-loopen och sedan trycker enter så ser du att programmet assignar en tom sträng till "psw", och då är while-conditionet inte längre uppfyllt.

"while psw" är shorthand notation för "while psw != ' ' ". Den returnerar True om strängen har några tecken i sig och False om strängen är tom.

m83_11 85
Postad: 5 okt 03:54

Jag glömde nämna att programmet ska skriva ut antingen "Lösenord OK!" eller "Inlogging avbruten"

Vill du, så flytta in prompten för lösenord innanför loopen. Då räcker det med att fråga efter lösenord på ett enda ställe:

while True:
    psw = input("Ange lösenord (tomt avbryter): ")
    if psw == '':
        print("avbruten")
        break
    elif psw == "banan":
        print("OK")
        break
    else:
        print("fel. försök igen")
Svara
Close