函数没有被调用

时间:2015-07-23 20:13:47

标签: python

我有下面的代码,我有两个函数print_menu()和pStockName()

def print_menu():
    print ("\t\t\t\t 1. Get Stock Series ")


print ("\t\t\t\t 2. Invoke Stocks.")
print ("\t\t\t\t 3. Generate DC Stock List . ")
print ("\t\t\t\t 4. QUIT")


def pStockName():
    global StockList, fStockList
    pStockList = []
    fStockList = []
    StockList = str(raw_input('Enter pipe separated list of StockS : ')).upper().strip()
    items = StockList.split("|")
    count = len(items)
    print  'Total Distint Stock Count : ', count
    items = list(set(StockList.split("|")))
    # pipelst = StockList.split('|')
    # pipelst = [i.split('-mc')[0] for i in StockList.split('|')]
    # pipelst = [i.replace('-mc','').replace('-MC','').replace('$','').replace('^','') for i in StockList.split('|')]
    pipelst = [i.replace('-mc', '').replace('-MC', '').replace('$', '').replace('^', '') for i in items]
    # pipelst = [Stock.rsplit('-mc',1)[0] for Stock in pipelst]
    filepath = '/location/Stock_data.txt'
    f = open(filepath, 'r')
    for lns in f:
        split_pipe = lns.split(':', 1)
        if split_pipe[0] in pipelst:
            index = pipelst.index(split_pipe[0])
            pStockList = split_pipe[0] + "|"
            fStockList.append(pStockList)
            del pipelst[index]
    # f.close()
    for lns in pipelst:
        print bcolors.red + lns, ' is wrong Stock Name' + bcolors.ENDC
        if lns:
            uResp = str(raw_input('Do You Want To Continue with option 0 [YES|Y|NO|N] : ')).upper().strip()
            if uResp == "NO" or uResp == "N":
                os.system("tput clear")
                print bcolors.FAIL + "\n PLEASE USE OPTION 0 TO ENTER THE Stock NAMES BEFORE PROCEEDING." + bcolors.ENDC
                # StockList = None
                print_menu()
        else:
            pStockName()
    f.close()

在上面的代码中,您必须在第4行看到我正在调用print_menu()函数。但它只是打印print_menu()函数的内容而不执行任何操作并转到pStockName()函数。在我调用它时,我想从print_menu()函数执行以下操作:

while choice >= 1 and choice < 4:
    if choice == 4:
        os.system("tput clear")

        if StockList:
            uResp = str(raw_input(
                bcolors.FAIL + 'Do you need to move : ' + StockList + ' ? Press Y To Go Back to Main Menu and N to Quit [YES|Y|NO|N] : ')).upper()
            if uResp == "NO" or uResp == "N":
                print  bcolors.HEADER + "GoodBye." + bcolors.ENDC
                break

我的意思是说当我在pStockName()函数中调用print_menu()函数时,在pStockName()函数的第4行最后一行它应该打印print_menu()函数的内容,当我按4时它应该执行操作退出。但是当我按下1到4中的任何一个选项时,它只会进入pStockName()函数。

请帮助我在这里做错了。

1 个答案:

答案 0 :(得分:1)

我在这里有点新意,但我看不到你将键盘输入分配到变量&#34;选择&#34;的位置。因此,程序将无法识别最终用户输入的内容。我的建议是指定&#34; choice&#34; into raw_input像这样:

choice = raw_input()
if choice == "4": # alternatively, perform int(choice) == 4
   print ("yes")

我希望这有帮助!