【发布时间】:2016-04-16 18:02:18
【问题描述】:
这是我的作业。
问题是找到一种方法来检查列表中的项目是否连续。
以下是我写的代码:
def consecutive(var):
for x in range(2, len(var)):
forward = var[x] - var[x-1]
backward = var[x-1] - var[x-2]
if forward == backward:
return True
else:
return False
var = []
print 'Enter your number:'
while True:
num = raw_input()
if num == '':
break
var += [int(num)]
print consecutive(var)
如果我输入像 1、2、3、4、5 这样的数字,那么我会得到 True
如果我输入像 2、6、3、9、7、1、4 这样的数字,那么我会得到 False
在这里,我成功地分别返回了 True 或 False 值。
但是有两个问题让我感到不安,因为如果我使用我的代码来解决问题,我不会得到我想要的值(它会给我一个错误)
第一个问题:空列表是否被视为连续列表?
第二:包含单个值的列表是否被视为连续列表?
你愿意帮助我吗?
【问题讨论】:
-
这些是应该在你的作业中定义的边缘情况。然而,在我看来,一个空列表或一个包含一个元素的列表确实应该被视为具有连续顺序,因为通过任何构造它们都是“排序的”。
-
我会说一个列表要连续,你必须至少有两个元素才能进行比较。
-
@JohnTitusJungao:虽然这不是一个疯狂的观点,但它违反了惯例。我们称
[]和[1]已排序,因为[] == sorted([])和[1] == sorted([1])即使没有两个元素,因为没有未排序的元素。类似的逻辑应该适用于连续元素,恕我直言。 -
@DSM 虽然我最初的想法是同意你的观点,但现在我不确定。这显然只是语义,但如果问题指定了一个带有连续元素的列表,你真的可以将其归结为排序和集合吗?或者这是否隐含地将您的列表限制为具有两个元素? (问是因为我不确定:P)
-
@DonkeyKong:这实际上只是一个约定,数学中的标准约定是在定义中允许vacuous truth。
标签: python python-2.7