输出为–;python
此函数仅返回值1。有人能帮忙吗?这些参数描述了我试图实现的内容,我不确定为什么会发生这种情况 def夹钳(最小值、最大值): """ 修改列表,使每个元素都在最小值和最大值之间。 列表中的任何数字,小于min将替换为min。任何 列表中大于max的数字将替换为max。任意数字 最小值和最大值之间保持不变。 这是一个过程。它修改列表,但不返回新的 列表 示例:如果列表为[-1,1,3,5],则钳制(列表0,4)将更改 将[0,1,3,4]作为其内容。 参数列表:要修改的列表 前提条件:alist是一个数字列表(float或int) 参数min:列表的最小值 前提条件:min=min是一个数字 """ 附加列表(最小值) 附加列表(最大值) 对于入围者: 如果最大值>=a>=min: 归还 表1.sort() 返回列表 返回:1,无论输入如何。代码有三个问题输出为–;python,python,conditional-statements,Python,Conditional Statements,此函数仅返回值1。有人能帮忙吗?这些参数描述了我试图实现的内容,我不确定为什么会发生这种情况 def夹钳(最小值、最大值): """ 修改列表,使每个元素都在最小值和最大值之间。 列表中的任何数字,小于min将替换为min。任何 列表中大于max的数字将替换为max。任意数字 最小值和最大值之间保持不变。 这是一个过程。它修改列表,但不返回新的 列表 示例:如果列表为[-1,1,3,5],则钳制(列表0,4)将更改 将[0,1,3,4]作为其内容。 参数列表:要修改的列表 前提条件:alist是
返回一个
会在元素在范围内时立即返回alist.append(min)
、alist.append(max)
和alist.sort()
与所述的所需功能无关min
和max
)def clamp(alist, min_, max_):
for i, a in enumerate(alist):
if a > max_:
alist[i] = max_ # limit to max
elif a < min_:
alist[i] = min_ # limit to min
return alist
print((clamp([-1, 1, 3, 5], 0, 4)))
# Output: [0, 1, 3, 4]
def夹持器(列表、最小值、最大值):
对于i,枚举中的a(列表):
如果a>最大值:
alist[i]=max#限制到max
elif a<最小值:
alist[i]=min#限制为min
返回列表
打印((夹具([-1,1,3,5,0,4)))
#输出:[0,1,3,4]
备选代码(使用列表理解)
def夹持器(列表、最小值、最大值):
返回[min_uu2;if a不能将条件语句串在一起。在两个单独的行中使用
max>=a和a>=min
,或者使用1,因为我尝试了1行,但仍然得到相同的响应。我不认为if语句可以使用两行。什么是thelist
保持参数一致,应该是clamp(alist,0,4)
而不是thelist
,在任何地方都没有定义。您不必将min
和max
附加到alist
中,如果要检查已填充列表中的值,只需比较这些值,而不是附加,然后replace()
值并在列表中排序。很抱歉,列表是一个意外事件,它应该是列表
,但这在功能描述中,而不是代码的一部分。这只是指一个假设列表,该列表已经在terminal中定义。如果您只是创建一个列表,其中每个元素都“钳制”在一个范围内,那么就不理解调用alist.append(min)、alist.append(max)和alist.sort()
的目的。此外,min和max不是很好的变量名,因为它们替换了内置函数,因此会让代码审阅者感到困惑。您的第一个if
语句检查是多余的,特别是如果您在其中只有pass
,则不需要。如果a>max:和如果a
,则直接跳到的检查。我还想补充一点,程序通常不会返回任何内容,例如random。shuffle
洗牌列表,但不会返回它。@FishingCode我删除了它:)您可以自己提交对代码的编辑@FishingCode——保持if条件和pass尽可能与OP代码相似,以便于他/她遵循我的建议。同意如列表理解版本所示,这不是必需的。
def clamp(alist, min_, max_):
return [min_ if a < min_ else max_ if a > max_ else a for a in alist]