我被命令建立一个Bulean函数,它接受一个数字列表,如果列表是一个适当的等级列表(即每个数字在0到100之间),则执行“True”,否则为“False”。然而我遇到错误,引起了,我相信我对这个程序并不是非常彻底的了解。我在这里问的原因是我主要通过做事来学习。
我尝试了几个脚本。这是其中之一:
def IsValidGradeList(I):
for x in range(0,len(I)+1):
if I[x] not in range (0,101):
return False
else: continue
return True
正如我所看到的,代码将不会像在脚本编写器中那样。我怎么参加呢? 我非常感谢你的帮助。
谢谢大家的帮助。不幸的是,我还没有使用“全部”内置函数,因为我们还没有学会如何正确使用它。然而,这是我到目前为止所做的。它似乎正在发挥作用。
def AreIntegers(I):
x=0
for x in range(0,len(I)):
if type(I[x])==int:
x=x+1
else:
return False
return True
def IsBounded(I):
x=0
for x in range(0,len(I)):
if I[x] in range(0,101):
x=x+1
else:
return False
return True
def IsValidGradeList(I):
if IsBounded(I)==True:
if AreIntegers(I)==True:
return True
else:
return False
else:
return False
答案 0 :(得分:2)
代码需要遍历列表,如果它捕获的等级超出0-100范围,则返回False
。如果它没有捕获任何这样的等级,它将继续直到它到达列表的末尾。那时我们知道没有一个等级超出范围,所以可以返回True
。因此,简单地取消return True
以便在循环结束后执行它会使代码工作。
def IsValidGradeList(I):
for x in range(0,len(I)+1):
if I[x] not in range (0,101):
return False
else: continue
return True # This needs to be *outside* of the for loop
这可以简化一点:continue
语句不做任何事情;你可以循环遍历列表的元素而不是使用索引;并且您可以使用a <= x <= b
表单而不是range
来检查成绩是否在范围内。
def is_valid_grade_list(L):
for grade in L:
if not 0 <= grade <= 100:
return False
return True
all
为此类函数提供了一个快捷方式:
def is_valid_grade_list(L):
return all(0 <= grade <= 100 for grade in L)
如果您需要检查每个成绩是否为整数以及检查它是否在范围内,您只需将isinstance(grade, int)
添加到条件中:
def is_valid_grade_list(L):
for grade in L:
if not (isinstance(grade, int) and 0 <= grade <= 100):
return False
return True
答案 1 :(得分:0)
is_valid_grade_list = all([x in xrange(0, 101) for x in grade_list])
答案 2 :(得分:0)
列表理解如何(不查看示例输入数据)?
all([False if I[x] not in range(0, 101) else True for x in range(0, len(I)+1)])