我正在尝试解决家庭作业。这是作业: 编写 in_order() 函数,该函数以整数列表作为参数,如果整数已排序(按从低到高的顺序),则返回 True,否则返回 False。如果列表已排序,则程序输出“In order”,如果列表未排序,则程序输出“Not in order”。
例如:如果传递给 in_order() 函数的列表是 [5, 6, 7, 8, 3],则该函数返回 False,程序输出:
不按顺序 例如:如果传递给 in_order() 函数的列表是 [5, 6, 7, 8, 10],则该函数返回 True 并且程序输出:
按顺序 注意:使用for循环。不要使用排序()或排序()。
这是我到目前为止的代码
def in_order(nums):
in_order = True
previous = check[0]
for item in check[1:]:
if __name__ == '__main__':
nums1 = [5, 6, 7, 8, 3]
if in_order(nums1):
print('In order')
else:
print('Not in order')
nums2 = [5, 6, 7, 8, 10]
if in_order(nums2):
print('In order')
else:
print('Not in order')
for
是否需要是一个单独的语句,或者它可以是生成器表达式的一部分吗?
def in_order(nums):
return all(nums[i-1] < nums[i] for i in range(1, len(nums)))
玩了一会后得到了这个。这应该有效。
def in_order(nums): 对于范围内的 i(len(nums)): 如果 nums[i] < nums[i-1]: return False elif nums[i] < nums[i+1]: return False else: return True
我使用马克的代码猜测了解决这个问题的方法。我更改了它,发现下面的代码可以解决问题。我不太清楚为什么。
def in_order(nums):
for i in range(len(nums)):
if nums[i-1] < nums[i]:
return False
else:
return True