0

我在将动态数量的参数放入列表中,然后能够在以后访问它们时遇到问题。这是代码。我正在传递诸如“2,3,4,5”之类的参数

def puesdoPrime(*args):
    from string import ascii_lowercase
    primeInput = []
    print "puesdoPrime not yet implemeneted"
    for arg in args:
        primeInput.append(arg)

    for i in primeInput:
        print "primeInput value are %i" % primeInput[i]

我收到以下错误:

Traceback (most recent call last):
  File "homework3.py", line 41, in <module>
    main()  
  File "homework3.py", line 34, in main
    puesdoPrime(printInput)
  File "homework3.py", line 15, in puesdoPrime
    print "primeInput value are %i" % primeInput[i]
TypeError: list indices must be integers, not tuple

这是调用函数的方式:

userInput = input()
    if userInput == 1:
        print "What numbers do you want to find that are simultaneously Puesdo Prime?"
        printInput = input()
        puesdoPrime(printInput)

任何帮助都将非常感谢帮助解决这个问题。

4

1 回答 1

4

Usingfor i in primeInput将遍历列表的值,而不是索引。因此,您希望将第二个for循环更改为以下内容:

for item in primeInput:
    print "primeInput value are %i" % item

或者循环索引:

for i in range(len(primeInput)):
    print "primeInput value are %i" % primeInput[i]

它也有助于查看您的呼叫方式puesdoPrime(),但要*args正确使用您的呼叫应该如下所示:

puesdoPrime(2, 3, 4, 5)

或者,如果您有现有的参数集合:

the_args = (2, 3, 4, 5)
puesdoPrime(*the_args)

如果没有*前面的代码中的,您将只传递一个参数,该参数将是一个四元素元组。

作为旁注,我认为您的意思是“伪”,而不是“puesdo”。

于 2013-09-20T20:24:35.233 回答