2017-03-10 114 views
1

问题

我刚刚开始使用python。我试图循环回到刚开始工作的这个基本程序。Python中的返回命令

当前进程刚结束程序,我不知道我错过了什么。我该如何重新调整return/select以使其工作?

节目信息

  • 达到最终公式是类似的信息(直径*量= X1)〜x1为真或假正确导管上浆表。

  • 直径将取决于布线类型 - 多种状态将在稍后添加用于类型/数量的混合和匹配以及为了方便添加电缆类型。

程序启动

import random 
import sys 
import os 

def prog01(): 
    print("") 
od = float(input("Please input the outer dimension of your wire size in decimal form: ")) 
quantity = float(input("Please choose how many cables you have: ")) 

# diameter of cabling 
def outer(od): 
    try: 
     od = float(od) 
     print (od * quantity) 
    except ValueError: 
     print ('A numeric value was not input in the program. Please only use numeric information') 

# quantity of cabling 
def number(quantity): 
    try: 
     quantity = float(quantity) 
    except ValueError: 
     print ('A numeric value was not input in the program. Please only use numeric information') 

# reference 
outer(od) 
number(quantity) 


def select_again(): 

     while True: 
      again = input("Do you have more cable types to add to your system? Please type y for yes or n for no: ") 
      if again not in {"y","n"}: 
       print("please enter valid input") 
      elif again == "n": 
       break 
      elif again == "y": 
       return prog01() 


# sizing tables - true/false statements 
x1 = (od * quantity) 

# emt_list = over 2 wires @ 40% ['.122', '.213', '.346', '.598', '.814', '1.342', '2.343', '3.538', '4.618', '5.901'] 
emt_list = ['1/2" Conduit','3/4" Conduit','1" Conduit','1&1/4" Conduit', '1&1/2" Conduit','2" Conduit','2&1/2" Conduit', 
      '3" Conduit','3&1/2" Conduit','4" Conduit',] 

if x1 <= .122: 
    print (emt_list [0]) 
elif x1 <= .213: 
    print (emt_list [1]) 
elif x1 <= .346: 
    print (emt_list [2]) 
elif x1 <= .598: 
    print (emt_list [3]) 
elif x1 <= .814: 
    print (emt_list [4]) 
elif x1 <= 1.342: 
    print (emt_list [5]) 
elif x1 <= 2.343: 
    print (emt_list [6]) 
elif x1 <= 3.538: 
    print (emt_list [7]) 
elif x1 <= 4.618: 
    print (emt_list [8]) 
elif x1 <= 5.901: 
    print (emt_list [9]) 
if x1 >= 5.902: 
    print ('You will need more than one piece of conduit') 

select_again() 

# rmc_list to come = over 2 wires @ 40% [] 
+1

不知道你的问题是什么,请你澄清一下吗? –

回答

0

在当前的代码会发生什么事是,当你再次输入您的选择循环,它只在输入'n'时才会离开输入循环。当你输入'y'时,函数prog01()运行,但它所做的只是打印一个新行并返回None,所以程序返回到再次选择循环。

为了让它做你想做的事情,你应该用while while循环语句替换函数prog01(),并且在'y'或'n' ',并且如果输入返回是'n',那么外部循环会中断。

我还在输入查询的末尾添加了.strip()。lower()来解释意外空间并删除区分大小写,并将其更改为raw_input()调用,因为我不知道如果你使用Python 2.x或3.x.如果您使用3.0+,则可以将其保留为input()调用。

import random 
import sys 
import os 

def outer(od): 
    try: 
     od = float(od) 
     print (od * quantity) 
    except ValueError: 
     print ('A numeric value was not input in the program. Please only use numeric information') 
def number(quantity): 
    try: 
     quantity = float(quantity) 
    except ValueError: 
     print ('A numeric value was not input in the program. Please only use numeric information') 

while True: 
    od = float(input("Please input the outer dimension of your wire size in decimal form: ")) 
    quantity = float(input("Please choose how many cables you have: ")) 

    # diameter of cabling 


    # quantity of cabling 

    # reference 
    outer(od) 
    number(quantity) 

    # sizing tables - true/false statements 
    x1 = (od * quantity) 

    # emt_list = over 2 wires @ 40% ['.122', '.213', '.346', '.598', '.814', '1.342', '2.343', '3.538', '4.618', '5.901'] 
    emt_list = ['1/2" Conduit','3/4" Conduit','1" Conduit','1&1/4" Conduit', '1&1/2" Conduit','2" Conduit','2&1/2" Conduit', 
       '3" Conduit','3&1/2" Conduit','4" Conduit',] 

    if x1 <= .122: 
     print (emt_list [0]) 
    elif x1 <= .213: 
     print (emt_list [1]) 
    elif x1 <= .346: 
     print (emt_list [2]) 
    elif x1 <= .598: 
     print (emt_list [3]) 
    elif x1 <= .814: 
     print (emt_list [4]) 
    elif x1 <= 1.342: 
     print (emt_list [5]) 
    elif x1 <= 2.343: 
     print (emt_list [6]) 
    elif x1 <= 3.538: 
     print (emt_list [7]) 
    elif x1 <= 4.618: 
     print (emt_list [8]) 
    elif x1 <= 5.901: 
     print (emt_list [9]) 
    if x1 >= 5.902: 
     print ('You will need more than one piece of conduit') 

    again = raw_input("Do you have more cable types to add to your system? Please type y for yes or n for no: ").lower().strip() 
    while True: 
     if again not in {"y","n"}: 
      print("please enter valid input") 
     else: 
      break 
    if again == "n": 
     break 


    # rmc_list to come = over 2 wires @ 40% [] 
+0

干杯,谢谢你的帮助! –

0

如果使用Python 2,您需要使用的raw_input代替input