用列表传递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
,因为这是一个链式比较。当然,仍然不是预期的。:-)