用列表传递PYTHON参数

用列表传递PYTHON参数,python,list,parameter-passing,Python,List,Parameter Passing,将参数传递到我的函数中时,它将无法识别列表并输出字符串 游戏名为传球,需要输出猪落地的状态 我知道有些地方的代码效率很低,尽管这是因为我一直在尝试不同的方法,但都没有成功:( 提前感谢您的帮助 以下是代码: norolls = int(input("Enter the number of rolls: ")) counter = 0 def roll(nothrows,counter): rollList = [] while counter < nothrows:

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

游戏名为传球,需要输出猪落地的状态

我知道有些地方的代码效率很低,尽管这是因为我一直在尝试不同的方法,但都没有成功:(

提前感谢您的帮助

以下是代码:

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)
norolls=int(输入(“输入卷数:”)
计数器=0
def辊(非行,计数器):
滚动列表=[]
当计数器小于行时:
rollrand=randint(0100)
附加(rollrand)
计数器=(计数器+1)
返回列表
滚动列表=滚动(norolls,计数器)
rollList=list(映射(int,rollList))
listlen=len(滚动列表)
def卷展栏(列表、listpos、ListLen):
listpos=0
对于范围内的x(列表):
如果列表[listpos]==1<35:
印刷品(“粉色”)
elif列表[listpos]==35<65:
打印(“点”)
elif列表[listpos]==65<85:
打印(“剃刀背”)
elif列表[listpos]==85<95:
印刷品(“Trotter”)
elif列表[listpos]==95<99:
打印(“斯努特”)
其他:
列表[listpos]==99<100
印刷品(“倾斜的喷气机”)
listpos=(listpos+1)
卷展栏(滚动列表、计数器、列表)

我假设您希望
如果List[listpos]==1<35
意味着
List[listpos]
介于1和35之间,其中35不包括在内。 写作的方法是:

if 1 <= List[listpos] < 35:

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

if 1 <= List[listpos] < 35:

if 1我的声誉太低,无法发表评论,但我将尝试澄清一下代码并给出我的答案

对于初学者,有一点您应该知道,
list
是一个保留名称,因此我不建议将其作为参数传递给任何函数。您应该将
rollList
传递给
rollout()
,因为这是您正在创建的列表。将列表作为参数传递的方法如下:

list\u name=[1,2,3,4,5]

def函数名称(myList=[]):
对于myList中的x:
打印x

功能名称(列表名称)

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

我还将取消
计数器
列表len
作为参数,因为您在函数开头将计数器设置为0,并且
列表len
可以通过
len()函数找到

其次,对于等式语句,请按如下方式键入:

如果列表名[listpos]>=1且列表名[listpos]<35


我确信有一种较短的方法可以做到这一点,但这将帮助您将其视为一系列价值观。

我的声誉太低,无法发表评论,但我将尝试澄清一下代码并给出我的答案

对于初学者,有一点您应该知道,
list
是一个保留名称,因此我不建议将其作为参数传递给任何函数。您应该将
rollList
传递给
rollout()
,因为这是您正在创建的列表。将列表作为参数传递的方法如下:

list\u name=[1,2,3,4,5]

def函数名称(myList=[]):
对于myList中的x:
打印x

功能名称(列表名称)

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

我还将取消
计数器
列表len
作为参数,因为您在函数开头将计数器设置为0,并且
列表len
可以通过
len()函数找到

其次,对于等式语句,请按如下方式键入:

如果列表名[listpos]>=1且列表名[listpos]<35


我确信有一种较短的方法可以做到这一点,但这将有助于您将其可视化为一个值范围。

因为只有100个可能的滚动(您没有为0指定解释)还有一种替代方法:将if-elif-else-change替换为一个查找表,将rolls映射到名称。下面的代码就是这样做的。它还创建了一个包含列表的rolls列表

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

由于只有100个可能的卷(您没有将解释分配给0),因此有一种替代方法:将if elif else change替换为一个将卷映射到名称的查找表。下面的代码就是这样做的。它还创建了一个包含列表的卷列表

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

我不理解if…==xa==b
不是解析为
(a==b)
,它是
(a==b)和(b
,因为这是一个链式比较。当然,仍然不是预期的。:-)我不理解if…==xa==b
不是解析为
(a==b)
,它是
(a==b)和(b
,因为这是一个链式比较。当然,仍然不是预期的。:-)