Python的问题怎么解答呢

有一分数序列:2/1 3/2 5/3 8/5 13/8 21/13...求出这个数列的前20项之和。

比较经典的Python解决问题


#include<stdio.h>
int* BUBBLE_ALGORITHM(int SWAP_ARRAY[],int length)
//第一个参数表示需要比较的数组,第二个参数表示数组的长度
{
    int Ditias = 1;
    for(;length > 0 ;length--)
    {
        if(Ditias == 0) return SWAP_ARRAY ;
        //若没有再进行比较,说明数组已排列,退出程序
        Ditias = 0;
        for(int i = 0 ;i < length - 1 ;i++)
        if(SWAP_ARRAY[i] > SWAP_ARRAY[i+1])
        {
            Ditias = 1;
            int exchange = SWAP_ARRAY[i];
            SWAP_ARRAY[i] = SWAP_ARRAY[i+1];
            SWAP_ARRAY[i+1] = exchange;
        }
    }
    return SWAP_ARRAY;
}
int main()
{
    int cj[20] = {0};
    {
        for(int i=0;i<20;i++){
            printf("请输入第%d位同学的成绩:\n",i+1);
            fflush(stdin);
            scanf("%d",&cj[i]);
        }
    }
    int len = sizeof(cj) / sizeof(cj);
    int *Temporarily = BUBBLE_ALGORITHM(cj,len);
    int Total_score=0;
    for(int i=0;i<20;i++){
        Total_score=Total_score+Temporarily[i];
    }
    printf("总分:%d分\n",Total_score);
    printf("平均分:%d分\n",Total_score/20);
    printf("分数总览:\n");
    for(int i=19;i>=0;i--){
        int j=0;
        printf("第%d名%d分\n",j+1,Temporarily[i]);
        j++;
    }
    return 0;
}
a = 2
b = 1
s = 0
for i in range(20):
    s += a / b
    a, b = a + b, a
print(s)

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7398909
  • 你也可以参考下这篇文章:python有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
  • 除此之外, 这篇博客: python 面试题(1)中的  3、有一分数序列为:2/1,3/2,5/3,8/5,13/8,21/13,  请使用Python代码生成,并打印该数列的前30(演示代码取5项)项,并求和返回 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 提示:观察分数的分子和分母,每1项都和前2项有关系,也可检索“斐波那契数列”

    # 显示分数的包
    import fractions
    from functools import reduce
    
    def fab(max_num): 
        # 完成分子分母的生成并计算求和返回结果
        # your code here
        
        # 创建列表保存数据
        _list = []
        
        # 1、首先生成斐波那契数列
        a = 1  # 注意这里a从1开始
        b = 1
        for i in range(max_num):
            # a是分母,b是分子
            a, b = b, a + b
            '''
            上式等同于下面3式:
            temp = b
            b = a + b
            a = temp
            '''
            # print("a = ", a, "b = ", b)
            
            # 2、生成分数
            _list.append(fractions.Fraction(b, a))
            # _list.append(b / a)
    
        print("看一眼生成的列表长啥样:", _list)
        # 分数要遍历才能打印...
        for elm in _list:
            print(elm)
    
        assert len(_list) == max_num, "长度一致"
        
        # 3、求前30项的和
        sum_ = reduce(lambda x, y: x + y, _list)
        return sum_
    
    print("该数列的前5项和: ",fab(5))
    看一眼生成的列表长啥样: [Fraction(2, 1), Fraction(3, 2), Fraction(5, 3), Fraction(8, 5), Fraction(13, 8)]
    2
    3/2
    5/3
    8/5
    13/8
    该数列的前5项和:  1007/120