2016-02-28 87 views
-4

我试图找出一种方法来循环这段代码,以便它在所有三次计算完成后重新启动。我已经想出了一种重新启动程序的方法,但是我无法重新启动它,以便返回到第一个计算步骤。任何人都可以帮助兄弟出去?提前致谢。在Python中循环

,我已经习惯了重新启动程序的代码:

def restart_program(): 

python = sys.executable 
os.execl(python, python, * sys.argv) 

if __name__ == "__main__": 
    answer = input("Do you want to restart this program?") 
    if answer.lower().strip() in "y, yes".split(): 
     restart_program() 

我没有重启代码程序:

import math 
import sys 
import os 


print ("This program will calculate the area, height and perimeter of the Triangles: Scalene, Isosceles, Equilateral and a Right Angled Triangle.") 

# calculate the perimeter 

print ("Please enter each side for the perimeter of the triangle") 

a = float(input("Enter side a: ")) 
b = float(input("Enter side b: ")) 
c = float(input("Enter side c ")) 

perimeter = (a + b + c) 

print ("The perimeter for this triangle is: " ,perimeter) 


# calculate the area 

print ("Please enter each side for the area of the triangle") 

a = float(input("Enter side a: ")) 
b = float(input("Enter side b: ")) 
c = float(input("Enter side c ")) 

s = (a + b + c)/2 

sp = (a + b + c)/2 
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5 #area = math.sqrt(sp*(sp - a)*(sp - b)*(sp - c))# 

print ("The area for this triangle is %0.2f: " %area) 


# calculate the height 

height = area/2 

print ("The height of this triangle is: ", height) 

回答

0

您可以将所有内容放在while循环中,它可以永久重复或直到用户键入某个短语。

import math 
import sys 
import os 


print ("This program will calculate the area, height and perimeter of the Triangles: Scalene, Isosceles, Equilateral and a Right Angled Triangle.") 
while True: 


    # calculate the perimeter 

    print ("Please enter each side for the perimeter of the triangle") 

    a = float(input("Enter side a: ")) 
    b = float(input("Enter side b: ")) 
    c = float(input("Enter side c ")) 

    perimeter = (a + b + c) 

    print ("The perimeter for this triangle is: " ,perimeter) 


    # calculate the area 

    print ("Please enter each side for the area of the triangle") 

    a = float(input("Enter side a: ")) 
    b = float(input("Enter side b: ")) 
    c = float(input("Enter side c ")) 

    s = (a + b + c)/2 

    sp = (a + b + c)/2 
    area = (s*(s-a)*(s-b)*(s-c)) ** 0.5 #area = math.sqrt(sp*(sp - a)*(sp - b)*(sp - c))# 

    print ("The area for this triangle is %0.2f: " %area) 


    # calculate the height 

    height = area/2 

    print ("The height of this triangle is: ", height) 

while answer.lower() in ("yes", "y"): 
    //code 
    answer = input("Would you like to repeat?") 

你也可以把它全部变成功能def main():,然后做一些形式的递归(调用函数本身)。

这些只是几种方法。有很多方法可以得到你想要的东西。

-2

这应该做的。

def restart_program(): 

python = sys.executable 
os.execl(python, python, * sys.argv) 

if __name__ == "__main__": 
    while input("Do you want to restart this program?").lower().strip() in "y, yes".split(): 
     restart_program() 
-1

只是有自己的功能循环。重新启动外壳是没有必要的。

import math 
import sys 
import os 

def calc(): 
    print ("This program will calculate the area, height and perimeter of the Triangles: Scalene, Isosceles, Equilateral and a Right Angled Triangle.") 

    # calculate the perimeter 

    print ("Please enter each side for the perimeter of the triangle") 

    a = float(input("Enter side a: ")) 
    b = float(input("Enter side b: ")) 
    c = float(input("Enter side c ")) 

    perimeter = (a + b + c) 

    print ("The perimeter for this triangle is: " ,perimeter) 


    # calculate the area 

    print ("Please enter each side for the area of the triangle") 

    a = float(input("Enter side a: ")) 
    b = float(input("Enter side b: ")) 
    c = float(input("Enter side c ")) 

    s = (a + b + c)/2 

    sp = (a + b + c)/2 
    area = (s*(s-a)*(s-b)*(s-c)) ** 0.5 #area = math.sqrt(sp*(sp - a)*(sp - b)*(sp - c))# 

    print ("The area for this triangle is %0.2f: " %area) 


    # calculate the height 

    height = area/2 

    print ("The height of this triangle is: ", height) 

    if __name__ == "__main__": 
     answer = input("Do you want to restart this program?") 
     if answer.lower().strip() in "y, yes".split(): 
      calc() 
     else: 
      exit() 


calc() 

如果答案是肯定的,那么函数被调用并且一切都重复。如果答案不是,那么程序退出。