2016-06-19 85 views
-3

自从我在python工作以来,它已经有一段时间了。我有两个列表(A和B)。如果用户键入'A',我想输出为列表A.从用户输入打印列表

我似乎无法记住如何做到这一点。

person = input('List A or B?: ') 
person = str(input()) 

A = ["Mark","Rob","Mary"] 

B = [ "Alex","Mitch","Tyler"] 



for x in A: 
    print x 
+0

你意思是这样的'if person =='A':myList = A else:myList = B' ....'myList'中的x? – Harvey

+0

@哈维你可以将其缩短为三元语句或添加一个elif来检查输入是否为 – Li357

+0

@AndrewL:我打算这样做,但认为他们可能会简化问题并且三元语句那么就不合适了。不过,你是对的。我也应该加上'elif'。只是很难知道他们真正想要什么。 – Harvey

回答

0

只需确保检查的反应是什么,和你设置:

person = input("List A or B? ") 

listA = ["Mark","Rob","Mary"] 

listB = ["Alex","Mitch","Tyler"] 

if person == "A": 
    for x in listA: 
     print(x) 

elif person == "B": 
    for x in listB: 
     print(x) 

注 - 当给交互式反馈,你必须引用它。 input()解释输入,如果您回复B而不是"B",则会出现错误。在Python 3

def main(): 
    person = input('List A or B?: ') 

    A = ["Mark","Rob","Mary"] 

    B = [ "Alex","Mitch","Tyler"] 

    myList = [] 
    if person == 'A': 
     myList = A 
    elif person == 'B': 
     myList = B 

    for x in myList: 
     print(x) 

if __name__ == "__main__":main() 

+0

太棒了。谢谢,这有帮助! :) – omonoia

+0

关于'input':没有理智的程序员在Python 2.x中使用它(请参阅[这个问题])(http://stackoverflow.com/questions/7709022/is-it-ever-useful-to-use-pythons -input-over-raw-input)) – Matthias

+0

@Matthias - 实际上,这个答案似乎是面向Python 3的。在Python 2中,它甚至不起作用('person'将是一个列表而不是字符串)。 – TigerhawkT3

1
person_dict = { 
    'A': ["Mark","Rob","Mary"], 
    'B': [ "Alex","Mitch","Tyler"] 
} 
key = raw_input("List A or B:") 
print(persons_dict.get(key, None)) 
+0

它并没有在这种特殊情况下产生变化,但是在Python 2中'print'不需要括号。但它只是一个对象,所以它不会改变输出。同样,'dict.get()'在缺省键时已经默认返回'None'。不需要指定它。 – TigerhawkT3

0

一个可能的答案我做了“myList中”最初是空的,所以如果用户不选择一个选项也不会显示任何内容。

+0

请注意,OP没有使用Python 3,正如他们将“print”用作语句所证明的那样。 – TigerhawkT3

-2

有几种方法可以做到这一点,其中一些方法由其他用户解释。

我会告诉你最快的(但也是最不安全的)的方式来做到这一点:

# Python 3 
person = input() 
for x in globals()[person]: 
    print(x) 

例子:

>>> A = ['foo', 'bar'] 
>>> person = input() 
A 
>>> person 
'A' 
>>> globals()[person] 
['foo', 'bar'] 
>>> for x in globals()[person]: 
...  print(x) 
foo 
bar 
+0

这个压低了这个的人,关心给予解释吗?我想我已经说得很清楚,这是一个快速入门。 – oxalorg

+4

这段代码没有意义。你在Python 2中使用'input',它已经将输入的字符串评估为所需列表的引用,然后将该列表转换为一个字符串,然后尝试访问'globals() '用这个字符串列表的关键字。它100%被打破。 – TigerhawkT3

+0

@ TigerhawkT3对不起,我很着急,只是复制粘贴OP中的代码,并在未经审查的情况下进行了必要的更改。我对python2没有任何经验,所以我已经通过一个合适的例子修复了python3的代码。 – oxalorg

0

你可以这样做:

a = ["Mark","Rob","Mary"] 

b = [ "Alex","Mitch","Tyler"] 

person = raw_input('List A or B?: ').lower() 

if person == 'a': 
    print a 

elif person == 'b': 
    print b 

else: 
    print 'Try again'