2016-04-18 8 views
0

Tut mir leid, wenn diese Frage als "Duplikat" betrachtet wird, aber ich konnte keine Antworten finden, die für das relevant sind, was ich frage. Also, meine Frage klingt sehr kompliziert, also zeige ich Ihnen nur den Code, den ich geschrieben habe und was ich tun soll. Hier ist der Code:Wie bekomme ich das Programm, das ich gemacht habe, um zu einem anderen Teil zurückzukehren?

def area_of_circle(c): 
    if float(c) > 0 and type(float(c)) == int or float: 
     return float(c) ** 2 * 3.14 
    else: 
     return "Needs to be positive" 

def length(l): 
    if float(l) > 0 and float(l) == float or int: 
     return l 

def height(h): 
    if float(h) > 0 and float(h) == float or int: 
     return h 

def area_of_rectangle(length, height): 
    if float(l) > 0 and float(l) == int or float and float(h) > 0 and float(h) == float or int: 
     return float(l) * float(h) 
    else: 
     return "Needs to be positive" 

def area_of_square(a): 
    if float(a) > 0 and type(float(a)) == int or float: 
     return float(a) ** 2 
    else: 
     return "Needs to be positive" 

user_reply = raw_input("Find the area of different shapes! Type circle, square, or rectangle!") 
if user_reply == 'circle' or user_reply == 'Circle': 
    c = raw_input('You chose circle! What is the radius?') 
    print "The area of the cirlce would be", area_of_circle(c) 
elif user_reply == 'Square' or user_reply == 'square': 
    a = raw_input('You chose square! What is the length of one side?') 
    print "The area of the square would be", area_of_square(a) 
elif user_reply == 'Rectangle' or user_reply == 'rectangle': 
    l = raw_input('You chose rectangle! What is the length?') 
    h = raw_input('What is the height?') 
    print "The area of the rectangle would be", area_of_rectangle(l, h) 
else: 
    print 'That is not a valid response!' 
    user_reply = raw_input("Cirlce, square, or rectangle?") 

Ok so offensichtlich dieser Code, den ich im Grunde Ihnen gemacht sagt den Bereich entweder ein Quadrat, ein Rechteck oder Kreis basierend auf dem Eingang er empfängt. Es tut alles, was es richtig soll, aber ich möchte wissen, wie ich es so machen kann, dass es am Ende meines Codes heißt: "Finde den Bereich mit verschiedenen Formen! Tippe Kreis, Quadrat oder Rechteck ein!" Wenn die Person so ein anderes Wort eingibt und sie zur else-Anweisung bringt, wo sie "Das ist keine gültige Antwort" ausgibt, wie würde ich es so machen, dass das Programm den Benutzer zurück zu dem Teil bringt, wo es heißt " Finde den Bereich mit verschiedenen Formen! Tippe Kreis, Quadrat oder Rechteck ein! ". Entschuldige die vielen Worte und danke an alle, die sich die Zeit genommen haben, dies zu lesen!

+0

Vielen Dank es funktioniert jetzt besser, danke auch für die Hinweise auf die Fehler! Ich werde definitiv mehr über den Kontrollfluss recherchieren! – Eli

Antwort

1

Sie benötigen einen While Loop (oder eine For Loop)

while True: 
    user_reply = raw_input("Find the area of different shapes! Type circle, square, or rectangle!") 
    if user_reply == 'circle' or user_reply == 'Circle': 
     ... 
    elif user_reply == 'exit': 
     break 
    else: 
     print 'That is not a valid response!' 
     user_reply = raw_input("Cirlce, square, or rectangle?") 

Mehr zu Steuerfluss here.

Auch gibt es viele Fehler in Ihrem Code, float(c) > 0 and type(float(c)) == int or float: immer wahr, weil

  • float(c) > 0 zurückkehren, könnte wahr oder falsch sein, aber eine Ausnahme auslösen kann, wenn c ist eine Zeichenfolge
  • type(float(c)) == int or float gibt sind zwei Aussagen
    • type(float(c)) == int, die False immer sein wird, weil Sie es als Schwimmer werfen und Sie zu einem int
    • vergleichen
    • float, wird dies immer True

sein, wenn Sie eine Instanz eines Typs, wenn ein Variablen überprüfen möchten, sollten Sie die Funktion isinstance(obj, class) in Ihre if-Anweisung verwenden.

Verwandte Themen