鱼C论坛

 找回密码
 立即注册
查看: 1738|回复: 1

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

[复制链接]
发表于 2023-5-22 03:29:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

假如我得到如下列表
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
机器返回True
如果
[0, 2, 4, 6, 8, 10, 13, 14, 16, 18, 20]
机器返回False


indices = [0, 2, 4, 6, 8, 10, 12, 14, 16]
for i in indices:
    if (i - (i + 1)) == ((i + 1) - (i + 2)):
        print('True')
    else:
        print('False')

我就简单粗暴的这样搞了 没问题不
最佳答案
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[1] - lst[0]    ratio = lst[1] / lst[0]    is_arithmetic = True    is_geometric = True    for i in range(2, len(lst)):        if lst[ i] - lst[i-1] != diff:            is_arithmetic = False        if lst[ i] / lst[i-1] != ratio:            is_geometric = False    return is_arithmetic or is_geometric
这个函数接受一个列表作为输入,判断这个列表是否为等差数列或者等比数列,如果是返回True,否则返回False。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[1] - lst[0]    ratio = lst[1] / lst[0]    is_arithmetic = True    is_geometric = True    for i in range(2, len(lst)):        if lst[ i] - lst[i-1] != diff:            is_arithmetic = False        if lst[ i] / lst[i-1] != ratio:            is_geometric = False    return is_arithmetic or is_geometric
这个函数接受一个列表作为输入,判断这个列表是否为等差数列或者等比数列,如果是返回True,否则返回False。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表