2015-10-08 18 views
5

Diğer yazıları okuyordum ve bunu çözemedim. Bu tekrarın sonunda ne girdiğim önemli değil, daima döngü tekrarlanır. while(repeat != "Quit" or repeat != "quit" or repeat != "b" or repeat != "B" or repeat != "no" or repeat != "No"):'u denedim ama hala işe yaramadı. Başka ne denemem gerektiğini bilmiyorum. Bu süre boyunca sorun ne?Neden while döngüsüm durmuyor?

repeat = "d" 
    print "Please answer questions using the choices (A, B, C, etc.)" 
    time.sleep(2.1738) 
    while repeat != "Quit" or repeat != "quit" or repeat != "b" or repeat != "B" or repeat != "no" or repeat != "No": 
     print "A) Round Edges" 
     print "B) Straight Edges" 
     Edges1 = raw_input("Does the shape have round edges or straight edges?: ") 
     if Edges1 == "a" or Edges1 == "A" or Edges1 == "Round Edges" or Edges1 == "round edges": 
      print "A) Circle" 
      print "B) Semi-Circle" 
      Circle = raw_input("Is it a circle or semi-circle?: ") 
      if Circle == "A" or Circle == "a" or Circle == "Circle" or Circle == "circle": 
       radius_C = input("What is the radius (1/2 of the Diameter)?: ") 
       Area_C = math.pi * radius_C ** 2.0 
       Circum_C = 2.0 * math.pi * radius_C 
       Diameter_C = 2.0 * radius_C 
       print "The radius is " + str(radius_C) + ". " 
       time.sleep(.5) 
       print "The diameter is " + str(Diameter_C) + ". " 
       time.sleep(.5) 
       print "The circumference is " + str(round(Circum_C, 2)) + ". " 
       time.sleep(.5) 
       print "The area is " + str(round(Area_C, 2)) + ". " 
       time.sleep(5) 
      elif Circle == "B" or Circle == "b" or Circle == "Semi-Circle" or Circle == "semi-circle": 
       radius_S = input("What is the radius (1/2 of the Diameter)?: ") 
       Area_S = math.pi * radius_S ** 2.0 * .5 
       Diameter_S = 2 * radius_S 
       Per_S = ((math.pi * 2 * radius_S)/2) + Diameter_S 
       print "The radius is " + str(radius_S) + ". " 
       time.sleep(.5) 
       print "The diameter is " + str(Diameter_S) + ". " 
       time.sleep(.5) 
       print "The perimeter is " + str(round(Per_S, 2)) + ". " 
       time.sleep(.5) 
       print "The area is " + str(round(Area_S, 2)) + ". " 
       time.sleep(5) 
      else: 
       print "Incorrect input." 
     elif Edges1 == "b" or Edges1 == "B" or Edges1 == "Straight Edges" or Edges1== "straight edges": 
      sides = input("How many sides does the shape have?: ") 
      sideL = input("What is the length of 1 side?: ") 
      Area = round(Area_R(sides, sideL), 4) 
      Perim = round(Perm_R(sides, sideL), 4) 
      print "The area of this figure is: " + str(Area) 
      print "The perimeter of the figure is: " + str(Perim) 
     else: 
      print "Incorrect input." 


     time.sleep(4) 
     print" " 
     print" " 
     print "A) yes" 
     print "B) No" 
     repeat = raw_input("Want to try another?: ") 
     time.sleep(1) 
main() 
+3

Sana ve' yerine 'or' ... – ThiefMaster

cevap

7

Eh, en şartıyla bir göz atalım:

while repeat != "Quit" or repeat != "quit" 

bunu düşün. repeat'un değeri ne olursa olsun, bu her zaman doğrudur. repeat, her zaman "Quit"VEYA FROM"quit"'dan farklı olacaktır. Eğer öyleyse, diğeri olmayacak. "Çık" 'dan VE FROM'dan "çıkmak" dan farklı olmanız gerekir. daha kompakt,

while repeat != "Quit" and repeat != "quit" ... 

Veya: Bu deneyin

while repeat.lower() not in ["quit", "b"] 
+0

Vay Böyle basit düzeltmenin' geliyordu düşünüyorum: Belki/ –

+2

, ben benekli daha kolay çünkü tüm kodu döngüde okumadım - problemin ilk veya son satırlarda olacağını varsaydım. Bir dahaki sefere, bir sorun bulamadığınız zaman, ** sorunu olan ** en küçük possibe parçasını bulun ve bunu sallayın :) – slezica

+0

Yardımlarınız için teşekkürler. –

0

bu gibi veya özellik var ve 's değiştirin: Her zaman böyle şeyler eşit değildir, en az bir olacak

while repeat != "Quit" and repeat != "quit" and repeat != "b" and repeat != "B" and repeat != "no" and repeat != "No": 

. Aynı anda iki şeye eşit olamaz. İşte başka bir kısa örnek (ama öneriyi deneyin).

# Never true 
repeat == "Quit" and repeat == "quit" 

# Never false 
repeat != "Quit" or repeat != "quit" 
İlgili konular