Python (六)函数和代码的复用

1.打招呼函数

name=input()
def say_hello(name): 
    n=name
    print("你好,{},认识你很高兴!".format(n))
say_hello(name)

2.能否组成三角形

def is_triangle(a, b, c):
    """请实现函数"""
    if a>0 and b>0 and c>0:
        if (a+b)>c and (a+c)>b and (b+c)>a:
            return 1
        else:
            return 0
    else:
        return   -1
a=0
b=1
c=1
print(is_triangle(a, b, c))

3.转换秒为时间

def convert_from_seconds (seconds):
    #day,h,m,s
    int(seconds)
    day=seconds//86400
    h=(seconds-day*86400)//3600
    m=(seconds-day*86400-h*3600)//60
    s=(seconds-day*86400-h*3600-m*60)
    return [day,h,m,s]

print(convert_from_seconds (610))

4.最大公约数

# 定义并实现函数 common_divisor
def common_divisor (num1, num2):
    if num1>num2:
        min=num2
    else:
        min=num1
    for i in range(1,min+1):
        if (num1%i)==0 and (num2%i)==0 :
            result=i
    return result

# 调用函数
result = common_divisor(24, 16)
print(result)

5.简单计算器实现

def addition (num1, num2):
    return num1+num2
# 定义减法函数 subtraction
def subtraction (num1, num2):
    return num1-num2
# 定义乘法函数 multiplication
def multiplication (num1, num2):
    return num1*num2
# 定义除法函数 division
def division (num1, num2):
    return num1/num2

6.杨辉三角

# 定义函数 pascal_triangle 接受参数 num,并返回杨辉三角第 num 行

def pascal_triangle (num):
    l1 =[1]
    l2 =[]
    n=0
    while n< num:
        l2=l1
        l1=[sum(t) for t in zip([0]+l1,l1+[0])]
        n+=1
    return l2
print(pascal_triangle(3))

7.7段数码管绘制

#七段数码管的绘制
import turtle as timport timedef drawgap():    t.pu()    t.fd(5)def drawline(draw):#绘制单段数码管    t.pendown() if draw else t.penup()    t.fd(40)    drawgap()    t.right(90)def drawdigit(digit):#根据数值绘制七段数码管    drawline(True) if digit in [2,3,4,5,6,8,9] else drawline(False)    drawline(True) if digit in [0,1,3,4,5,6,7,8,9] else drawline(False)    drawline(True) if digit in [0,2,3,5,6,8,9] else drawline(False)    drawline(True) if digit in [0,2,6,8] else drawline(False)    t.left(90)    drawline(True) if digit in [0,4,5,6,8,9] else drawline(False)    drawline(True) if digit in [0,2,3,5,6,7,8,9] else drawline(False)    drawline(True) if digit in [0,1,2,3,4,7,8,9] else drawline(False)    t.left(180)    t.pu()#为绘制后续数字确定位置    t.fd(20)#为绘制后续数字确定位置def drawdate(date):#获取日期    t.pencolor("green")    for i in date:        if i == '年':            t.write('年',font = ("Arial",18,"normal"))            t.pencolor("blue")            t.fd(40)        elif i == "月":            t.write('月',font = ("Arial",18,"normal"))            t.pencolor("yellow")            t.fd(40)        elif i == "日":            t.write('日',font = ("Arial",18,"normal"))            t.pencolor("red")        else:            drawdigit(eval(i))#通过eval()将数字变成整数def main(date):    t.setup(1500,650,20,20)    t.pu()    t.fd(-600)    t.pensize(5)    drawdate(time.strftime("%Y年%m月%d日",time.gmtime()))    t.fd(40)    t.color("red")    drawdate(date)    t.hideturtle()    t.done()main(input("请输入一个年月日:\n"))

8.斐波那契数列计算

# 定义一个 fbi 函数,参数 num,返回斐波那契数列第 num 项的值。

def fbi (num):
    F=[1,1,""]
    for i in range (2,num):
        F[i]=F[i-1]+F[i-2]
        F.append(F[i])
    return F[num]
print(fbi (4))
    

9.汉诺塔实践

# 请在...补充一行或多行代码
count = 0
def hanoi (n, src, dst, mid):
    global count
    if n == 1:
        print("{}: {}->{}".format(1, src, dst))
        count += 1
    else:
        hanoi (n-1, src, mid,dst)
        print("{}: {}->{}".format(n, src, dst))
        count+=1
        hanoi(n-1, mid, dst, src)
hanoi(3, "src", "dst", "mid")
print(count)

10.科赫雪花小包裹

import turtledef koch(size, n):    if n==0:        turtle.fd(size)    else:        for angle in [0,60,-120,60]:            turtle.left(angle)            koch(size/3,n-1)def main(level):    turtle.setup(600, 600)    turtle.penup()    turtle.goto(-200, 100)    turtle.pendown()    turtle.pensize(2)    #level=2    koch(400,level)    turtle.right(120)    koch(400,level)    turtle.right(120)    koch(400,level)    turtle.hideturtle()try:    level = eval(input("请输入科赫曲线的阶: "))    main(level)except:    print("输入错误")

11.合法的用户名

"""
实现 check_username 函数,检查 username 是否有效
username 长度在 6-18 位之间,返回 True,否则返回 False
"""
def check_username(username):
    if 6<=len(str(username))<=18:
        return True
    else:
        return False
username=input()
print(check_username(username))

12.密码的强度

"""实现密码强度计算函数:1. 实现函数 passworld_strength 返回 0-10 的数值,表示强度,数值越高,密码强度越强2. 密码长度在 6 位及以上,强度 +1,   在 8 位及以上,强度 +2,   在 12 位及以上,强度 +43. 有大写字母,强度 +24. 除字母外,还包含数字,强度 +25. 有除字母、数字以外字符,强度 +2"""
def password_strength(pwd):    intensity=0    if len(pwd)>=12:        intensity+=4    elif 8<=len(pwd)<12:        intensity+=2    elif 6<=len(pwd)<8:        intensity+=1    pwdlist=list(pwd)    for i in range(len(pwd)):        if 'A'<=pwdlist[i]<='Z':            intensity+=2            break    for i in range(len(pwd)):        if 'A'<=pwdlist[i]<='Z' or 'a'<=pwdlist[i]<='z':            for j in range(len(pwd)):                if '0'<=pwdlist[j]<='9':                    intensity+=2                    break        break    for i in range(len(pwd)):        if ('null'<=pwdlist[i]<'0') or ('9'<pwdlist[i]<='@') or ('Z'<pwdlist[i]<='`') or ('z'<pwdlist[i]<='~'):            intensity+=2            break    return intensitypwd1=str(input())print(password_strength(pwd1))

13.藏头诗

poem1 = [
    "芦花丛中一扁舟",
    "俊杰俄从此地游",
    "义士若能知此理",
    "反躬难逃可无忧"
]

poem2 = [
    "我画蓝江水",
    "爱晚亭上枫",
    "秋月溶溶照",
    "香烟袅袅绕"
]
def acrostic(poem):
    newstr=[]
    for i in range(len(poem)):
        str1=poem[i]
        rstr=list(str1)
        newstr.append(rstr[0])
        str1=""
    newstr1=''.join(newstr)
    return newstr1

print(acrostic(poem1))
print(acrostic(poem2))

14.统计字符出现次数

"""
统计字符串 string 中出现字符 char 的次数,并返回;
char 是长度为 1 的字符串。
"""
def sum_char(string, char):
    str1=list(string)
    count=0
    for i in range(len(string)):
        if str1[i]==char:
            count+=1
    return count
str2=str(input())
char1=str(input())
print(sum_char(str2, char1))

15.文件名扩展

"""
获取文件扩展名
说明:实现 file_ext 函数,该函数接受一个表示文件名的字符串参数 filename,返回它的扩展名
"""
def file_ext(filename):
    str1=list(filename)
    for i in range(len(filename)):
        if str1[i]!=".":
            continue
        elif str1[i]==".":
            str2=str1[i+1:]
            str3=''.join(str2)
            return str3
            break
        else:
            return "error"
filename1=input()
print(file_ext(filename1))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值