Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Input 返回多输入(Python)_Input_Python 3.x - Fatal编程技术网

Input 返回多输入(Python)

Input 返回多输入(Python),input,python-3.x,Input,Python 3.x,在Python3中,我有一行请求输入,然后在导入的字典中查找,然后列出字典中出现的所有输入。我的问题是,当我运行代码并输入时,它只会返回我输入的最后一个单词。 例如 这本词典包括(AIR,AMA) 如果我输入(AIR,AMA),它只会返回AMA。 任何解决此问题的信息都将非常有用 字典: EXCHANGE_DATA = [('AIA', 'Auckair', 1.50), ('AIR', 'Airnz', 5.60), ('AM

在Python3中,我有一行请求输入,然后在导入的字典中查找,然后列出字典中出现的所有输入。我的问题是,当我运行代码并输入时,它只会返回我输入的最后一个单词。 例如 这本词典包括(AIR,AMA) 如果我输入(AIR,AMA),它只会返回AMA。 任何解决此问题的信息都将非常有用

字典:

EXCHANGE_DATA = [('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)))
toDisplay = []
a = a.split()
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])))
导入共享
a=输入(“请输入”)
s1=a.替换(“”,“”)
打印('请列出投资组合:'+a)
打印(“”)
n=[“代码”、“名称”、“价格”]

print({0:好的,代码似乎有点混乱。下面是一个更简单的版本,它似乎可以满足您的需要:

#!/usr/bin/env python3

EXCHANGE_DATA = [('AIA', 'Auckair', 1.50),
                 ('AIR', 'Airnz', 5.60),
                 ('AMP', 'Amp',3.22)]

user_input = input("Please Specify Shares: ")

names = set(user_input.upper().split())

print ('Listing the following shares: ' + str(names))
print (" ")

# Print header
n=["Code", "Name", "Price"]
print ('{0: <6}{1:<20}{2:>8}'.format(n[0],n[1],n[2]))

#print data
for i in [data for data in EXCHANGE_DATA if data[0] in names]:
  print ('{0: <6}{1:<20}{2:>8}'.format(i[0],i[1],i[2]))
如果您给它以空格分隔的引号名称,那么您提供的代码示例实际上达到了预期效果


希望这能有所帮助。

一个代码示例会有所帮助,因为我不知道你在说什么。用代码更新谢谢,这很有帮助:)非常感谢你的帮助!这当然让它更清楚了,如果输入包含逗号,它是否有可能以同样的方式工作?(例如air、amp、aia)再次感谢您,您可以使用
re
模块拆分输入。例如,将
names=set(user\u input.upper().split())
替换为
names=set(re.split([\t,]*”,user\u input))
查看一下以了解更多信息。还要注意,上面的解决方案在计算上非常昂贵(浏览每一个股票价格清单)也许有更好的方法。非常感谢你的帮助!
➤ python3 program.py 
Please Specify Shares: air amp
Listing the following shares: {'AMP', 'AIR'}

Code  Name                   Price
AIR   Airnz                    5.6
AMP   Amp                     3.22