将参数传递给我的函数时,它将无法识别列表并输出字符串。
游戏被称为通过猪,并且需要输出猪登陆的状态。
我知道代码效率低下的地方,虽然这是因为我一直在尝试不同的方法:(
提前感谢您的帮助!
这是代码:
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)
答案 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=[]
。
我也会删除counter
和listlen
作为参数,因为你在函数开头设置了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])