2012-10-10 12 views
6

Hiçbir koşul doğru şekilde yerine getirilmediğinde, Python'u bir if ifadesinin başına nasıl taşıyabilirim. Hiçbir seçenek geçerli değilse, ilk ifadeye nasıl geri dönülür

Ben bir temel Eğer böyle/else:

print "pick a number, 1 or 2" 
a = int(raw_input("> ") 

if a == 1: 
    print "this" 
if a == 2: 
    print "that" 
else: 
    print "you have made an invalid choice, try again." 
İstediğim deyimi eğer onları tüm programı yeniden başlatmak zorunda kalmadan bunun için başka bir seçim yapmak için kullanıcı istemi etmektir

, ama çok duyuyorum Python için yeni ve herhangi bir yerde çevrimiçi cevabı bulmakta sorun yaşıyorum.

+1

Her şeyi bir döngüde sarmanız gerekir (genellikle 'while'). – quantumSoup

+0

bu yüzden benim için ne yapacak? teşekkürler hasta gitmek, araştırma yapmak için bile hiçbir fikrim yoktu – wondergoat77

+0

@quantumSoup Bu gibi zaman do-while döngüsünü özlüyorum, – TheZ

cevap

6

A bunu yapmak için oldukça yaygın yolu girişi geçerli olduğunda döngü çıkmak için break ifadelerle, süresiz olarak çalışacak bir while True döngü kullanmaktır yolu burada örneğin, yeniden deneme sayısını sınırlamak için:

print "pick a number, 1 or 2" 
for retry in range(5): 
    a = int(raw_input("> ") 
    if a == 1: 
     print "this" 
     break 
    if a == 2: 
     print "that" 
     break 
    print "you have made an invalid choice, try again." 
else: 
    print "you keep making invalid choices, exiting." 
    sys.exit(1) 
+0

Ek bilgi için teşekkürler! – wondergoat77

4

Bir süre döngü kullanın.

print "pick a number, 1 or 2" 
while True: 
    a = int(raw_input("> ") 
    if a == 1: 
     print "this" 
     break 
    if a == 2: 
     print "that" 
     break 
    print "you have made an invalid choice, try again." 

de hoş yok:

print "pick a number, 1 or 2" 
a = None 
while a not in (1, 2): 

    a = int(raw_input("> ")) 

    if a == 1: 
     print "this" 
    if a == 2: 
     print "that" 
    else: 
     print "you have made an invalid choice, try again." 
+0

olsa bile düzenli bir döngü ile taklit etmek kolay, ben kendimi anlamaya ve kapatmaya beni yenmek soru, yardımınız için teşekkür ederiz teşekkürler – wondergoat77

+0

2. satırdaki Parantezler gereksizdir ve kolonun özünü kaçırdınız. Ayrıca, (1, 2) 'de değilken kullanmak daha kolay olurdu: '. – deadly

+0

@deadly Çok iyi. –

3

bir özyinelemeli işlevini kullanabilirsiniz

def chk_number(retry) 
    if retry==1 
     print "you have made an invalid choice, try again." 
    a=int(raw_input("> ")) 
    if a == 1: 
     return "this" 
    if a == 2: 
     return "that" 
    else: 
     return chk_number(1) 

print "Pick a number, 1 or 2" 
print chk_number(0) 
İlgili konular