python小程序练习 5-7 单元

七段数码管绘制

在这里插入图片描述

import turtle as t
import time
def gap():
    t.penup()
    t.fd(5)

def drawline(draw):
    gap()
    t.pendown()  if draw else t.penup()
    t.fd(40)
    gap()
    t.right(90)
    
def drawDigit(n):
    drawline(True) if n in [2,3,4,5,6,8,9]  else draw(False)
    drawline(True) if n in [1,3,4,6,7,8,9,0]  else draw(False)
    drawline(True) if n in [2,3,5,6,8,9,0]  else draw(False)
    drawline(True) if n in [2,5,6,8,9,0]  else draw(False)
    t.left(90)
    drawline(True) if n in [4,5,6,8,9,0]  else draw(False)
    drawline(True) if n in [2,3,5,6,7,8,9,0]  else draw(False)
    drawline(True) if n in [1,2,3,4,6,7,8,9,0]  else draw(False)
    t.left(180)
    t.penup()
    t.fd(20)

def drawDate(date):
    t.color("red")
    for i in range date:
        if i == '-' :
            t.write("年",font("Arial", 18, "normal"))
            t.pencolor("yellow")
            t.fd(40)
        elif i == '+' :
            t.write("月",font("Arial", 18, "normal"))
            t.pencolor("bule")
            t.fd(40)
        else if i == '=' :
            t.write("日",font("Arial", 18, "normal"))
            t.pencolor("green")
            t.fd(40)
        else:
            drawDigit(i)

def main():
    t.setup(700,350)
    t.penup()
    t.fd(-330)
    t.pensize(5)
    drawDate(time.strftime("%Y-%m+%d+",time.gtime()))
    h.hideturtle()
    t.done()
    
main()

科赫雪花小包裹

在这里插入图片描述

import turtle
def 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)
    ...
    
try:
    level = eval(input("请输入科赫曲线的阶: "))
    main(level)
except:
    print("输入错误")

任意累积

在这里插入图片描述

def cmul(a,*b):
  for i in b:
      a*=i
  return a

print(eval("cmul({})".format(input())))

斐波那契数列

在这里插入图片描述

def fbi(n):
    if n == 1 or n == 2 :
        return 1
    else:
        return fbi(n-1)+fbi(n-2)

n = eval(input())
print(fbi(n))

汉诺塔实践

在这里插入图片描述

steps = 0
def hanoi(src, des, mid, n):
    global steps
    if n == 1:
        steps+=1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
    else:
        hanoi(src,mid,des,n-1)
        steps+=1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
        hanoi(mid,des,src,n-1)

N = eval(input())
hanoi("A", "C", "B", N)

基本统计值计算

在这里插入图片描述

#请在...补充一行或多行代码
#CalStatisticsV1.py
def getNum():       #获取用户不定长度的输入
    getNums = input()
    s= getNums.split(",")
    for i in range(len(s)):
        s[i] = eval(s[i])
    return s
    
def mean(numbers):  #计算平均值
    #numbers 是一个列表
    res = 0
    for i in range(len(numbers)):
        res += numbers[i]
    return res / len(numbers)
    
def dev(numbers, mean): #计算标准差
    sdev = 0.0
    for num in numbers:
        sdev = sdev + (num - mean)**2
    return pow(sdev / (len(numbers)-1), 0.5)

def median(numbers):    #计算中位数
    #进行排序
    sorted(numbers)
    size = len(numbers)
    if size % 2 == 0:
        return (numbers[size//2 -1] + numbers[size // 2 ])/2
    else :
        return numbers[size//2]
    
n =  getNum() #主体函数
m =  mean(n)
print("平均值:{:.2f},标准差:{:.2f},中位数:{}".format(m,dev(n,m),median(n)))


文本词频统计:引文版哈姆雷特

在这里插入图片描述

def getText():
    txt = open("hamlet.txt", "r").read()
    #取出大小写影响
    txt = txt.lower()
    #将特殊字符 用空格替换
    for ch in  '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~' :
        txt = txt.replace(ch," ")
    return txt
    

    
hamletTxt = getText()
#分割为一个个的词 ,返回的是一个列表
words = hamletTxt.split()
#使用字典保存 词-》出现次数的 映射
counts = {}
#遍历列表,统计词以及对应的次数
for word in words:
    counts[word] = counts.get(word,0)+1
#将字典转为列表进行排序
items = list(counts.items())
#排序
items.sort(key=lambda x:x[1], reverse = True)
#取前十个
for i in range(10):
    print(items[i][0])

人名独特性统计

在这里插入图片描述

s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 
       杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 
       金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 
       鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 
       阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 
       乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 
       忽必烈 慕容复 张三丰 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 
       李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 
       逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 
       洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 
       黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 
       张三丰 令狐冲 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 
       洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 
       完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 
       郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 
       谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 
       双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 
       逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄'''
      
#将字符串以空格划分,返回一个list,用set去重,返回大小即可
print(len(set(s.split())))

字典反转输出

s = input()
try:
    d = eval(s)
    res ={}
    for k in d:
       res[d[k]] = k
       
    print(res)
except:
    print("输入错误")

《沉默的羔羊》之最多单词

在这里插入图片描述

import jieba
f = open("沉默的羔羊.txt")
ls = jieba.lcut(f.read())
#ls = f.read().split()
d = {}
for w in ls:
    if len(w) > 2:
        d[w] = d.get(w, 0) + 1
maxc = 0
maxw = ""
#遍历字典,找到最大的词频
for k in d:
    if d[k] > maxc:
        maxc = d[k]
        maxw = k
    elif d[k] == maxc and k > maxw:
        maxw = k
print(maxw)
f.close()

文件行数

在这里插入图片描述

f = open("latex.log","r")
count = 0
for line in f:
    line = line.strip("\n")
    if line == "":
        continue
    count+=1
print("共{}行".format(count))

文件字符分布

在这里插入图片描述

f = open("latex.log","r")
#只扫描a -z所以要对字典进行初始化
#定义一个字典统计 单词与出现次数的映射
d = {}
#初始化
for i in range(26):
    d[chr(ord("a")+i)] = 0
#计算字符次数
count = 0

#嵌套遍历
for line in f:
    for c in line:
        d[chr(ord(c))] = d.get(chr(ord(c)),0)+1
        count+=1

print("共{}字符".format(count),end="")
#最后只遍历26个字母
for i in range(26):
    word,count =(chr(ord("a")+i)) ,d.get(chr(ord("a")+i))
    print(",{}:{}".format(word,count),end="")

文件独特行数

在这里插入图片描述

f = open("latex.log")
#先读取全部行,返回的是一个列表,每一行代表一个元素
lines = f.readlines()
#先进行一次去重
s = set(lines)
#将不重复的行进行删除
for i in s:
    lines.remove(i)
#剩下的就是重复的行
#对重复的行进行去重,
t = set(lines)
#最终的结果 = 不重复的行 - 重复的行  
print("共{}独特行".format(len(s) - len(t)))

CSV格式列变换:

在这里插入图片描述

f = open("data.csv")
ls = []
for line in f:
    line = line.replace("\n","")
    ls.append(line.split(","))
f.close()

#每一行进行逆置
for row in ls:
    print(",".join(row[::-1]))

CSV格式数据清洗

在这里插入图片描述

f = open("data.csv")
#读取每一行,然后使用 ,  进行分隔 返回一个列表
for line in f:
    #先将当前行的换行符去除
    line = line.strip("\n")
    #将 ,  替换为,
    ls = line.replace(", ",",")
    #输出
    print(ls)
f.close()
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值