2013-03-22 24 views
0

我想創建一個代碼,接受用戶輸入,將它與元組列表(shares.py)進行比較,然後將值打印在列表中。例如,如果用戶輸入是友邦保險,該代碼將返回:多個輸入產生想要的輸出

Please list portfolio: aia 

Code Name     Price 
AIA Auckair     1.50 

這對於一個輸入工作正常,但我想要做的是使之成爲多個輸入工作。 例如,如果用戶輸入了友邦保險,航空,放大器 - 此輸入將返回:

Please list portfolio: aia, air, amp 

Code Name     Price 
AIA Auckair     1.50 
AIR AirNZ     5.60 
AMP Amp      3.22 

這是我到目前爲止所。任何幫助,將不勝感激!

import shares 
a=input("Please input") 
s1 = a.replace(' ' , "") 
print ('Please list portfolio: ' + a) 
print (" ") 
n=["Code", "Name", "Price"] 
print ('{0: <6}'.format(n[0]) + '{0:<20}'.format(n[1]) + '{0:>8}'.format(n[2])) 
z = shares.EXCHANGE_DATA[0:][0] 
b=s1.upper() 
c=b.split() 
f=shares.EXCHANGE_DATA 
def find(f, a): 
    return [s for s in f if a.upper() in s] 
x= (find(f, str(a))) 
print ('{0: <6}'.format(x[0][0]) + '{0:<20}'.format(x[0][1]) + ("{0:>8.2f}".format(x[0][2]))) 

shares.py包含此

EXCHANGE_DATA = [('AIA', 'Auckair', 1.5), 
       ('AIR', 'Airnz', 5.60), 
       ('AMP', 'Amp',3.22), 
       ('ANZ', 'Anzbankgrp', 26.25), 
       ('ARG', 'Argosy', 12.22), 
       ('CEN', 'Contact', 11.22)] 

回答

1

我假設一個到包含以下格式的值「友邦空氣放大器」

raw = a # just in case you want the original string at a later point 
toDisplay = [] 
a = a.split() # a now looks like ['aia','air','amp'] 
for i in a: 
    temp = find(f, i) 
    if(temp): 
     toDisplay.append(temp) 

for i in toDisplay: 
    print ('{0: <6}'.format(i[0][0]) + '{0:<20}'.format(i[0][1]) + ("{0:>8.2f}".format(i[0][2])))  

基本上我想要做的是

  • 將輸入拆分成列表
  • 你在該列表中做什麼針對每個項目的單一輸入

希望這有助於!

+0

謝謝,這當然有幫助,但現在的問題是,如果我輸入幾個共享代碼(如放大器,空氣)它只會返回最後一個(在這種情況下空氣),有沒有辦法讓它在相互例如返回他們兩個: 請列出投資組合:AIA,空氣 代號名稱股價 AIA Auckair 1.50 AIR AirNZ 5.60 謝謝! – user2101517 2013-03-22 03:56:41