2015-07-23 2 views
-1

У меня есть ниже код, где у меня есть две функции 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 

Я хочу сказать, когда я звоню функцию print_menu() в pStockName() функции в 4-й последней строки из pStockName (функция) он должен печатать содержимое функции print_menu(), и когда я нажимаю 4, он должен выполнить операцию. Но когда я нажимаю какую-либо опцию от 1 до 4, она переходит только в функцию pStockName().

Пожалуйста, помогите мне, что я делаю неправильно здесь.

+1

Собственно, вы не определяете 'choice'. Ваш сценарий понятия не имеет, что такое '' выбор'': (((( – mlwn

+0

@Mlwn извините забыли вставить это. Отредактировано в исходном коде. Пожалуйста, посмотрите. – Ritesh

+0

вы все еще не присвоили значение 'choice' – mlwn

ответ

1

Я немного новичок здесь, но я не вижу, где вы назначаете ввод клавиатуры в переменный «выбор». Таким образом, программа не будет распознавать, что вводит конечный пользователь. Мое предложение назначить «выбор» в raw_input. Так же:

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

Надеюсь, это поможет!

Смежные вопросы