PYTHON参数传递列表

时间:2016-03-21 14:54:26

标签: python list parameter-passing

将参数传递给我的函数时,它将无法识别列表并输出字符串。

游戏被称为通过猪,并且需要输出猪登陆的状态。

我知道代码效率低下的地方,虽然这是因为我一直在尝试不同的方法:(

提前感谢您的帮助!

这是代码:

norolls = int(input("Enter the number of rolls: "))
counter = 0

def roll(nothrows,counter):
    rollList = []
    while counter < nothrows:
        rollrand = randint(0,100)
        rollList.append(rollrand)
        counter = (counter + 1)
    return rollList

rollList = roll(norolls,counter)
rollList = list(map(int, rollList))
listlen = len(rollList)    

def rollout(List, listpos, ListLen):
    listpos = 0
    for x in range(ListLen):
        if List[listpos] == 1< 35:
            print("Pink")
        elif List[listpos] == 35 < 65:
            print("Dot")
        elif List[listpos] == 65< 85:
            print("Razorback")
        elif List[listpos] == 85 < 95:
            print("Trotter")
        elif List[listpos] == 95 < 99:
            print("Snouter")
        else:
            List[listpos] == 99 < 100
            print("Leaning Jewler")
        listpos = (listpos + 1)


rollout(rollList, counter, listlen)

3 个答案:

答案 0 :(得分:0)

我假设您希望if List[listpos] == 1< 35表示List[listpos]介于1到35之间,其中35不包括在内。 写作的方式是:

if 1 <= List[listpos] < 35:

但是,在你的情况下,你真的不需要3级条件,因为只有第一个真正的if语句才能运行。所以,你可以简单地做:

if List[listpos] < 35:
    print("Pink")
elif List[listpos] < 65:
    ...

等等。

答案 1 :(得分:0)

我的评论声誉太低,但我会尝试澄清一些代码并给出答案。

首先,您应该知道的一件事是list是保留名称,因此我不建议将其作为参数传递给任何函数。您应该将rollList传递给rollout(),因为这是您要创建的列表。将列表作为参数传递的方式如下:

list_name = [1,2,3,4,5]

def function_name(myList=[]): for x in myList: print x

function_name(list_name)

注意函数定义中的myList=[]

我也会删除counterlistlen作为参数,因为你在函数开头设置了0,listlen可以找到len() 1}}功能。

其次,对于您的等式语句,请按以下方式键入它们:

if list_name[listpos] >= 1 and list_name[listpos] < 35

我确信这样做的方法较短,但这可以帮助您将其视为一系列值。

答案 2 :(得分:0)

由于只有100个可能的卷(您没有将解释分配给0),因此有另一种方法:将if-elif-else更改替换为查找表映射卷到名称。下面的代码执行此操作。它还会创建一个包含列表推导的卷列表。

from random import randint

rollmap = [None]
for sublist in (35*['Pink'], 30*['Dot'], 20*['Razorback'],
                10*['Trotter'], 4*['Snouter'], 1*['Leaning Jewler']):
    rollmap.extend(sublist)

n = int(input("Enter the number of rolls: "))
rolls = [randint(1, len(rollmap-1)) for i in range(n)]
for roll in rolls:
    print(rollmap[roll])