zoukankan      html  css  js  c++  java
  • 3.3.5 案例精选

      1 编写函数计算圆的面积。

     1 from math import pi as PI
     2 
     3 def circle_area(r):
     4     if isinstance(r,(int,float)):
     5         return PI * r * r
     6     else:
     7         print('You must give an integer or float as radius.')
     8 
     9 print('# 半径为3的圆的面积:',circle_area(3))
    10 # 半径为3的圆的面积: 28.274333882308138

      

      2 编写函数,接受任意多个实数,返回一个元组,其中第一个元素为所有参数的平均值,其他元素为所有参数中大于平均值的实数。

     1 #实现过程 1
     2 def get_num1(*a):
     3 
     4     avg = sum(a)/len(a)
     5 
     6     l = [avg]
     7 
     8     for i in a:
     9         if i > avg:
    10             l.append(i)
    11 
    12     return tuple(l)
    13 
    14 #实现过程 2
    15 def get_num2(*a):
    16 
    17     avg = sum(a)/len(a)
    18 
    19     t1 = (avg,)
    20 
    21     def is_bigger(n):
    22         return n > avg
    23 
    24     t2 = tuple(filter(is_bigger,a))
    25 
    26     return t1 + t2
    27 
    28 
    29 
    30 #实现过程 3
    31 def get_num3(*para):
    32     avg = sum(para)/len(para)
    33     g = [i for i in para if i > avg]   #列表推导式
    34     return (avg,) + tuple(g)
    35 
    36 print(get_num3(1,2,3,4,5,6,7,8,9))
    37 
    38 #(5.0, 6, 7, 8, 9)

       

      3 编写函数,接收字符串参数,返回一个元组,其中第一个元素为大写字母的个数,第二个元素为小写字母的个数。

     1 # 我的实现过程
     2 
     3 def get_num(s):
     4 
     5     #先判断传入的参数是否为字符串,如果不是结束程序。
     6     if not isinstance(s,str):
     7         return '在调用该函数时,请传入字符串作为参数'
     8     else:
     9         #定义一个变量表示大写字母的个数
    10         a = 0
    11         #定义一个变量表示小写字母的个数
    12         b = 0
    13 
    14         #判断如果s是空字符串,就没有必要进行下去了,结束程序
    15         if s is '':
    16             return '空字符串就没有必要继续处理了,结束'
    17         else:
    18             #遍历字符串,如果字符串的某个元素是小写字母,就b加1,是大写字母就 a加1
    19             for i in s:
    20                 if i.islower():
    21                     b += 1
    22                 if i.isupper():
    23                     a += 1
    24     return (a,b)
    25 
    26 print(get_num(''))     #空字符串就没有必要继续处理了,结束
    27 print(get_num(123))    #在调用该函数时,请传入字符串作为参数
    28 print(get_num('123'))  #(0, 0)
    29 print(get_num('hdwfegbngvjhdsafvdweBFEWIQAFBVDSAJFGQWEfkejdashgfFVBEQIRFAgfbewirfgvn    BGEKFA'))   #(34, 41)
    30 
    31 
    32 #作者的实现过程
    33 def demo(s):
    34     result = [0,0]
    35     for ch in s:
    36         if 'a' <= ch <= 'z':
    37             result[1] += 1
    38         elif 'A' <= ch <= 'Z':
    39             result[0] += 1
    40 
    41     return tuple(result)
    42 
    43 print(demo('hdwfegbngvjhdsafvdweBFEWIQAFBVDSAJFGQWEfkejdashgfFVBEQIRFAgfbewirfgvn    BGEKFA'))   #(34, 41)

      4  编写函数,接收包含20个整数的列表lst和一个整数k作为参数,返回新列表。处理规则:将列表lst中下标k之前的元素逆序,下标k之后的元素逆序,然后将整个列表lst中所有元素逆序。

     1 def get_num(lst,k):
     2 
     3     # 判断lst是不是列表,是列表再进行接下来的操作
     4     if not isinstance(lst,list):
     5         return '要求参数lst是列表类型的数据哦,程序结束'
     6     else:
     7 
     8         # 判断传入的列表的元素个数是否为20个
     9         if not len(lst) == 20 :
    10             return '您输入列lst的元素个数不足20个,程序结束'
    11         # 判断传入的参数k的值是否过大或过小,防止引起下标越界的报错
    12         if k > 18 or k < 0:
    13             return '您输入的参数k的值不在0-18的范围内,会引起下标访问越界'
    14 
    15     #根据传入的参数k分隔lst
    16     l1 = lst[:k]
    17     l2 = lst[k:]
    18 
    19     l1.sort(reverse=True)
    20     l2.sort(reverse=True)
    21 
    22     lr = l1  + l2
    23 
    24     return l1,l2,sorted(lr,reverse=True)
    25 
    26 
    27 print(get_num([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],7))
    28 
    29 
    30 #作者的代码
    31 def demo(lst,k):
    32     x = lst[:k]
    33     x.reverse()
    34     y = lst[k:]
    35     y.reverse()
    36     r = x + y
    37     return list(reversed(r))
    38 
    39 #作者的代码好简洁啊,但健壮性就查了点,很容易因为调用者传入的参数不符合要求而出现异常

      5 编写函数,接收整数参数t,返回斐波那契数列中大于t的第一个数。

     1 def get_num(t):
     2 
     3     a = b =1
     4 
     5     while True:
     6         a , b = b , a + b
     7 
     8         if t < a :
     9             return a
    10         elif t > a and t < b:
    11             return b
    12 
    13 
    14 print(get_num(-1))    #1
    15 print(get_num(7))     #8
    16 print(get_num(100))   #144

      6 编写函数,接收一个包含若干整数的列表参数lst,返回一个元组,其中第一个元素为列表lst中的最小值,其余元素为最小值在lst中的下标。

     1 import random
     2 
     3 def get_num(lst):
     4 
     5     # 由于要求列表中的元素都要是整数,所以先判断元素
     6     t = tuple(lst)
     7     for i in t:
     8         if not isinstance(i,int):
     9             return 'lst中的元素 i = {}不是整数,不符合要求,请重新传入符合要求的列表'.format(i)
    10 
    11     #开始找列表中元素的最小值
    12     m = min(lst)
    13 
    14     #对列表做一个转换,
    15     l1 = list(enumerate(lst))
    16 
    17     #获取列表元素的下标
    18     l2 = []
    19 
    20     for tu in l1:
    21         if tu[1] == m:
    22             l2.append(tu[0])
    23 
    24     return (m,) + tuple(l2)
    25 
    26 l = list(range(1,100))
    27 random.shuffle(l)
    28 l.append(1)
    29 print(l)
    30 print(get_num(l))
    31 
    32 #[11, 60, 19, 25, 16, 24, 87, 67, 20, 44,
    33 # 7, 10, 84, 73, 37, 42, 56, 68, 43, 91,
    34 # 26, 3, 8, 14, 71, 94, 5, 31, 32, 34,
    35 # 9, 17, 36, 69, 29, 12, 92, 41, 52, 57,
    36 # 15, 74, 65, 82, 77, 75, 18, 47, 86, 45,
    37 # 49, 2, 22, 64, 62, 33, 54, 1, 66,38,
    38 # 88, 78, 30, 70, 58, 80, 95, 93, 79,55,
    39 # 51, 6, 4, 40, 48, 39, 35, 89, 21,96,
    40 # 90, 63, 81, 27, 61, 99, 72, 85, 98,23,
    41 # 50, 53, 59, 28, 97, 76, 46, 13, 83,1]
    42 
    43 
    44 #执行结果:  (1, 57, 99)

     作者的实现过程:

     1 import random
     2 
     3 def demo(lst):
     4     m = min(lst)
     5     result = (m,)
     6     position = [index for index,value in enumerate(lst) if value == m]
     7     result += tuple(position)
     8 
     9     return result
    10 
    11 x = [random.randint(1,100) for i in range(50)]   #随机生成50条记录
    12 
    13 print(demo(x))
    14 #函数的执行结果 (2, 30, 39)

      7 编写函数,接收一个整数t作为参数,打印杨辉三角前 t 行。

     1 
     2 def demo(t):
     3     result = [[1],[1,1]]  #默认了前两项,从第三项开始加起的。
     4     line = [1,1]
     5 
     6     for i in range(2,t):
     7         r = []
     8         for j in range(0,len(line) - 1):
     9             r.append(line[j] + line[j+1])
    10 
    11         line = [1] + r +  [1]
    12         result.append(line)
    13     return result
    14 
    15 def output(result):
    16     for item in result:
    17         print(item)
    18 
    19 output(demo(10))
  • 相关阅读:
    用mapreduce 处理气象数据集
    熟悉常用的HBase操作
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
    获取全部校园新闻
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    NPOI的excel导出1
    DbHelperSQL帮助类
    C# mvc导出excel
  • 原文地址:https://www.cnblogs.com/avention/p/8620738.html
Copyright © 2011-2022 走看看