mumei2018 发表于 2023-5-22 03:29:11

请问 这样让机器判断列表里的数字是否等差数列或者等比数列?

请问 这样让机器判断列表里的数字是否等差数列或者等比数列?

假如我得到如下列表

机器返回True
如果

机器返回False


indices =
for i in indices:
    if (i - (i + 1)) == ((i + 1) - (i + 2)):
      print('True')
    else:
      print('False')

我就简单粗暴的这样搞了 没问题不

isdkz 发表于 2023-5-22 03:29:49

您的代码存在一些问题,首先您的indices列表中只有9个元素,而您的判断条件是基于3个元素之间的差别来判断是否为等差数列,因此需要至少10个元素。其次,您的判断条件有误,应该是判断前后两个元素之间的差别是否相等。最后,您只判断了等差数列的情况,没有判断等比数列的情况。

以下是一个可以判断等差数列和等比数列的代码:

def is_arithmetic_or_geometric_sequence(lst):
    if len(lst) < 2:
      return False
    diff = lst - lst
    ratio = lst / lst
    is_arithmetic = True
    is_geometric = True
    for i in range(2, len(lst)):
      if lst[ i] - lst != diff:
            is_arithmetic = False
      if lst[ i] / lst != ratio:
            is_geometric = False
    return is_arithmetic or is_geometric


这个函数接受一个列表作为输入,判断这个列表是否为等差数列或者等比数列,如果是返回True,否则返回False。
页: [1]
查看完整版本: 请问 这样让机器判断列表里的数字是否等差数列或者等比数列?