0

ユーザー入力を受け取り、それをタプルのリスト (shares.py) と比較し、リストに値を出力するコードを作成しようとしています。たとえば、ユーザー入力が aia の場合、このコードは次を返します。

Please list portfolio: aia

Code  Name                   Price
AIA   Auckair                 1.50  

これは 1 つの入力に対しては正常に機能しますが、複数の入力に対しても機能させたいと考えています。たとえば、ユーザー入力が aia、air、amp の場合、この入力は次のように返されます。

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)]
4

1 に答える 1

1

a には、「aia air amp」という形式の値が含まれていると想定しています。

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])))     

本質的に私がやろうとしていることは

  • 入力をリストに分割する
  • そのリストの各項目の単一の入力に対して行っていたことを正確に実行します

お役に立てれば!

于 2013-03-22T03:36:27.807 に答える