Python--16. 精彩案例赏析

示例 5-1 编写函数计算圆的面积

from math import pi as PI
def CircleArea(r):
    if isinstance(r, (int,float)): #确保接收的参数为数值
        return PI*r*r
    else:
        print('You must give me an integer or float as radius.')

CircleArea(10)
314.1592653589793

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

def func(*p):
    a = sum(p)/len(p)
    l = [a]
    for i in p:
        if i > a:
            l.append(i)
    return tuple(l)
func(1,2,3,4,5)
(3.0, 4, 5)

示例 5-3 编写函数demo(lst),接收一个包含若干整数的列表参数lst,返回一个列表,其中第一个元素为列表lst中的最小值,其余元素为最小值在列表lst中的下标。

  • 方法一:
def demo(lst):
    m = min(lst)
    r = [m]
    for i in lst:
        print(i,'tttttt')
        if i == m:
            #r.append(lst.index(i))
            print(lst.index(i))  #??????????????????
    return r
demo([1,2,3,3,3,1,1,1])
1 tttttt
0
2 tttttt
3 tttttt
3 tttttt
3 tttttt
1 tttttt
0
1 tttttt
0
1 tttttt
0





[1]
  • 方法二:
import random
def demo(lst):
    m = min(lst)
    result = [m]
    for index, value in enumerate(lst):
        if value == m:
            result.append(index)
    return result
x = [random.randint(1,20) for i in range(20)]
print(x)
print(demo(x))
[2, 19, 5, 10, 7, 18, 9, 8, 11, 19, 11, 12, 3, 19, 2, 2, 20, 14, 8, 10]
[2, 0, 14, 15]

示例 5-4 编写函数,接收字符串参数,返回一个元组,其中第一个元素为大写字母个数,第二个元素为小写字母个数。

  • 方法一:
def demo(s):
    l = 0
    b = 0
    for ch in s:
        if ch.islower():
            l += 1
        elif ch.isupper():
            b += 1
    return (l,b)
demo('aaBBccd')
(5, 2)
  • 方法二:
def demo(s):
    result = [0,0]
    for ch in s:
        if 'a'<=ch<='z':
            result[1] += 1
        elif 'A'<=ch<='Z':
            result[0] += 1
    return tuple(result)
print(demo('aaBBccd'))
(2, 5)

示例 5-5 编写函数,打印n行如下图形。

  • 方法一:
def demo(n):
    for i in range(n):
        for j in range(n,i,-1):
            print('T', end='')
        for j in range(i+1):
            print('X', end='')
        print('')

demo(10)
  • 方法二:
def demo(n):
    for i in range(n):
        print('T'*(n-i)+'X'*(i+1))
demo(10)
TTTTTTTTTTX
TTTTTTTTTXX
TTTTTTTTXXX
TTTTTTTXXXX
TTTTTTXXXXX
TTTTTXXXXXX
TTTTXXXXXXX
TTTXXXXXXXX
TTXXXXXXXXX
TXXXXXXXXXX

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

def demo(t):
    a,b = 1,1
    while b < t:
        a,b = b,b+a
    else:
        print(b)
demo(50)
55

示例 5-7 编写函数,接收两个正整数作为参数,返回一个元组,其中第一个元素为最大公约数,第二个元素为最小公倍数。

  • 方法一:
def demo(m,n):
    p = m*n
    while m%n != 0:
        m,n = n,m%n
    return(n,p//n)
demo(3,10)
(1, 30)
  • 方法二:Python标准库fractions、math中都提供了gcd()函数来计算最大公约数。
import math
def demo(m,n):
    r = math.gcd(m,n)
    return (r,(m*n)//r)
demo(3,10)
(1, 30)
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值