zoukankan      html  css  js  c++  java
  • Python【每日一问】34

    问:

    基础题:

    定义函数实现以下功能:求出 0-n 所能组成的奇数个数,
    位数最多 n+1 (0<n<10),
    比如键盘输入n=7,求出0-7所能组成的奇数个数

    提高题:


    有如下分数序列: 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13...
    求出这个数列的前 N 项之和,N由键盘输入


    答:

    基础题:

    定义函数实现以下功能:求出 0-n 所能组成的奇数个数,
    位数最多 n+1 (0<n<10),
    比如键盘输入n=7,求出0-7所能组成的奇数个数

    # 判断 0-n 之间有几个奇数
    def judge_odd_num(num):
        odd_num = []
        for i in range(1, num + 1):
            if i % 2 != 0:
                odd_num.append(i)
    
        return odd_num
    
    
    def calc_odd_nums(num, odd_num_count):
        '''
        当一个数的最后一位为奇数时,那么这个数一定为奇数;
        首位肯定不为0;
        从该数为1位数到该数为(n+1)位数开始统计奇数的个数:
        1.当只有一位数时,奇数个数为 0-n之间的奇数个数,此处以7为例,0-7之间有4个奇数;
        2.当该数为两位数时,奇数个数为4*7=28, 首位有7个数的可能性,个位只有4个奇数可选;
        3.当该数为三位数时,奇数个数为:4*8*7=224,首位仍然是7个数,十位可以是0-7的任意一个数,即8个数的可能性,个位依旧
        以此类推。。。
        :param num: 输入的数字n
        :param odd_num_count: 0-n之间的奇数个数
        '''
        sum_odd_count = 0
        for i in range(1, num+1):
            if i == 1:
                odd_num_count = odd_num_count
            elif i == 2:
                first_place = num
                odd_num_count = odd_num_count * first_place
            if i > 2:
                odd_num_count *= num+1
    
            sum_odd_count += odd_num_count
            print('%d位数的奇数个数为%d' % (i, odd_num_count))
    
        print('0-%s所能组成的奇数个数总和为:%d' %(num, sum_odd_count))
    
    
    if __name__ == '__main__':
        decimal_places = int(input("请输入数字n(1<n<10):"))
        odd_num = judge_odd_num(decimal_places)
        odd_num_count = len(odd_num)
        calc_odd_nums(decimal_places, odd_num_count)
    
    
    提高题:

    有如下分数序列: 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13... 
    求出这个数列的前 N 项之和,N由键盘输入

    def sum_fraction(n):
        x, y, i, j = 1, 2, 0, 0
        while i < n:
            j += y/x
            x, y = y, x+y
            i += 1
        return j
    
    
    n = eval(input('请输入:'))
    print('{:.2f}'.format(sum_fraction(n)))
    
    
    
    
  • 相关阅读:
    六大设计原则(一)
    .Net MVC 实现WebSocket
    Socket基础三
    Linux date命令的用法(转)
    SpringBoot自定义校验注解校验日期时间格式字符串
    前缀、中缀、后缀表达式
    什么是重放攻击,列举几种常见防御手段?
    09月13日总结
    09月12日总结
    09月11日总结
  • 原文地址:https://www.cnblogs.com/ElegantSmile/p/10964136.html
Copyright © 2011-2022 走看看