• Python算法题(三)——经典函数题


    题目一(统计字符串中指定类型字符的个数):

      假设所有字符分为三类:字母,数字及其他字符。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬编写一个函数,判断指定字符的类型,并统计字符串中该类型字符的个数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬主程序输入一个字符串及一个字符,调用上述函数统计该字符同类型字符在该字符串中的个数。

    描述:

      输入格式:

      第一行输入一个字符串,第二行输入一个字符,不要任何提示信息。

      输出格式:

      输出指定字符类型的个数,如输入输出示例所示。

      输入输出示例:

      

    分析:

      首先,我们需要遍历第一行输入的字符串,然后判断其中每一个字符的字符类型,是数字还是字母(字母又要考虑大小写),又或者是特殊符号,然后同字符类型的字符的个数,最后与第二行输入的字符作比较,输出与其相同类型的字符的个数。

    代码:

    def function(s,ch):
        a=0
        b=0
        c=0
        for i in s:
            if ord('0')<=ord(i)<=ord('9'):
                a=a+1
            elif ord('a')<=ord(i)<=ord('z') or ord('A')<=ord(i)<=ord('Z'):
                b=b+1
            else:
                c=c+1
        if ord('0')<=ord(ch)<=ord('9'):
            return a
        elif ord('a')<=ord(ch)<=ord('z') or ord('A')<=ord(ch)<=ord('Z'):
            return b
        else:
            return c
    s=input()
    ch=input()
    print("与%c同类型的字符有%d个。"%(ch,function(s,ch)))

    题目二(计算标准差): 

      编写一个函数计算一系列数的标准差。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

      标准差定义:有一组数据S=s0,s1,s2,...,sn-1,其标准差表示为,其中 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬主程序输入若干个数,调用上述函数计算这些输入的数的标准差,并输出。

    描述:

      输入格式:

      在同一行输入若干个数,用英文逗号,分隔。

      输出格式:

      标准差为:

      输入输出示例:

      

    分析:

      首先,我们需要计算出m,按照公式,我们可以令m=sum/length(sum=sum+x),令b=b+(x-m)**2,所以可以得到d=sqrt(b/(length-1)),即为标准差。

    代码:

    from math import *
    def fd(*a):
        sum = 0
        length = len(a)
        for x in a:
            sum+=x
        m = sum/length
        b = 0
        for x in a:
            b+=(x-m)**2
        return sqrt(b/(length-1))
    nums=eval(input())
    print("标准差为%.1f"%fd(*nums))

    题目三(判断闰年):

      编写函数leap,根据“四年闰百年不闰,四百年又闰”判断是否闰年。在主程序输入一个年份,调用leap函数判断其是否为闰年,并输出判断结果。

    描述:

      输入格式:

      输入一个代表年份的整数。

      输出格式:

      输出年份是否闰年的判断结果。

      输入输出示例:

      

    分析:

      明确本题的判断条件,即y%4==0 and y%100!=0返回True,或y%4==0 and y%400==0返回True,之后再判断,若leap(y)==True,则为闰年,反之则不是。

    代码:

    def leap(y):
        if y%4==0:
            if y%100!=0:
                return True
            elif y%400==0:
                return True
        else:
            return False    
    y=int(input())
    if leap(y)==True:
        print("%d年是闰年"%y)
    else:
        print("%d年不是闰年"%y)

     题目四(斐波那契数列):

      大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。

    描述:

      输入格式:

      10

      输出格式:

      [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

    分析: 

      我们要知道斐波那契数列即:1、1、2、3、5、8、13、21、34、……它的特点是该数列从第三项开始,每个数的值为其前两个数之和,即f(n)=f(n-2)+f(n+1)
    代码:
    n=int(input())
    def feibo(num):
        result=[0,1]
        for i in range(num-2):
            result.append(result[-2]+result[-1])
        return result
    print(feibo(n))
  • 相关阅读:
    链表中环的入口节点
    链表中倒数第k个节点
    调整数组顺序使奇数位于偶数前面
    53. Maximum Subarray
    42. Trapping Rain Water
    48. Rotate Image
    css技巧一
    html语义
    label标签表单响应
    CSS清除浮动
  • 原文地址:https://www.cnblogs.com/Chen-K/p/11703864.html
Copyright © 2020-2023  润新知