zoukankan      html  css  js  c++  java
  • 高中信息技术(Python) 必修1 数据与计算 源代码

    本文章原文地址:https://www.cnblogs.com/BobHuang/p/15621121.html,原文体验更佳
    教材P68中IDLE显示Python版本为3.7.0,所以建议使用Python3.7系列。

    第一章 数据与信息

    1.1 感知数据

    1.2 数据、信息与知识

    1.3 数据采集与编码

    1.4 数据管理与安全

    1.5 数据与大数据

    第二章 算法与问题解决

    2.1 算法概念及描述

    P46 停车场车位探测

    flag = int(input("输入车位状态值:"))
    if flag == 1:
        print("绿色")
        print("空车位")
    else:
        print("红色")
        print("非空车位")
    

    2.2 算法的控制结构

    2.3 用算法解决问题的过程

    第三章 算法的程序实现

    3.1 用计算机编程解决问题的一般过程

    P67 绘制正n边形

    import turtle
    n=int(input("请输入正多边形的边数n:"))
    a= int(input("请输入边长a:"))
    d=(n-2)*180/n
    t=turtle.Pen()
    for i in range(n):  #重复执行n遍
        t.forward (a)   #向前绘制长度为a的线段
        t.left(180-d)   #向左旋转(180-d)度
    

    3.2 Python语言程序设计

    P68 计算4+13

    >>>  print(4+13)
    17
    

    P69 输出"Hello Python!"

    >>>  print("Hello"+" Python!")
    Hello Python!
    

    教材'Hello Python!'错了。打印时并不输出类型的'',运行"Hello"+" Python!"是有单引号的。
    P69 两个数求和

    a=int(input("请输入正整数a:"))
    b=int(input("请输入正整数b:"))
    c=a+b
    print(c)
    

    P71 in成员运算符示例

    >>> "w" in "rw"
    True
    >>> "x" in "rw"
    False
    

    P72 定义变量

    >>> degress_cel=26.0
    >>> degress_cel
    26.0
    >>> degress_cel="26.0"
    >>> degress_cel
    '26.0'
    

    P72 赋值语句

    >>> number=0
    >>> number=number+1
    >>> print(number)
    1
    

    P72 定义列表

    >>> info=["BH60018","苹果",50]
    

    P73 使用索引访问元素

    >>> info=["BH60018","苹果",50]
    >>> info[2]
    50
    >>> s="Hello"
    >>> s[1]
    'e'
    

    P73 切片

    >>> info[0:2]
    ['BH60018', '苹果']
    >>> s[1:4]
    'ell'
    

    P74 字典

    >>> dic={"铅笔":71,"钢笔":59,"橡皮":98,"尺子":92}
    >>> print(dic["铅笔"])
    71
    

    P74 交换a和b

    a=int(input("请输入整数a的值:"))
    b=int(input("请输入整数b的值:"))
    c=a     #语句1
    a=b     #语句2
    b=c     #语句3
    print("a=",a)
    print("b=",b)
    

    P77 区间测速

    s=25
    t=int(input("请输入用时(秒):"))
    v=s*3600/t
    if v<=100:
        print("正常")
    else:
        print("超速")
    

    P78 问题与讨论
    分析下面两段代码,找出两者的区别。
    代码一

    s=25
    t=int(input("请输入用时(秒):"))
    v=s*3600/t
    if v<=100:
        print("正常")
    else:
        print("平均车速",round(v,1))
    print("超速")
    

    代码二

    s=25
    t=int(input("请输入用时(秒):"))
    v=s*3600/t
    if v<=100:
        print("正常")
    else:
        print("平均车速",round(v,1))
        print("超速")
    

    P80 区间测速加强版

    s=25
    t=int(input("请输入用时(秒):"))
    v=s*3600/t
    print("平均车速", round(v,1))
    if v<=100:
        print("正常")
    elif v<120:
        print("超过规定时速且不足20%")
    elif v<150:
        print("超过规定时速20%以上且不足50%")
    elif v<170:
        print("超过规定时速50%以上且不足70%")
    else:
        print("超过规定时速70%以上")
    

    P80 for序列遍历

    hobby=["篮球","羽毛球","看书","旅游","音乐"]
    for x in hobby:
        print(x)
    

    P81 for range列表遍历

    for num in range(0, 10, 1):
        print(num, end=' ')
    

    P82 热量消耗

    a=[95,100,122,180,245,221]
    s=0
    for j in a:
        s=s+j
    print("总消耗热量为:",s)
    

    P83 猜数游戏

    number=23
    running= False
    while not running:
        guess=int(input("请输入猜测的数:"))
        if guess==number:
            print("正确")
            running=True
        elif guess<number:
            print("偏小")
        else:
            print("偏大")
    

    P84 自定义三角形面积函数

    def Area(a, b, c):
        p=(a+b+c)/2
        s=(p*(p-a)*(p-b)*(p-c))**0.5
        return s
    

    P85 模块的导入和应用
    方法1

    >>> import math
    >>> math.sqrt(9)
    3.0
    

    方法2

    >>> from math import sqrt
    >>> sqrt(9)
    3.0
    

    P86 计算圆的面积

    import math
    r=float(input("请输入圆的半径r:"))
    pi=math.pi
    s=pi*pow(r, 2)
    print("圆面积是:",str(s))
    

    P86 随机出场顺序

    import random
    cla=["(2)班","(3)班","(5)班","(8)班","(9)班"]
    random.shuffle(cla)
    for x in cla:
        print(x)
    

    P86 使用Image模块操作图像

    from PIL import Image
    im= Image.open("school.jpg") #打开school.jpg图像文件
    print(im.format)             #获取图像文件格式
    print(im.size)               #获取图像尺寸大小(以像素为单位表示图像的宽度和高度)
    print(im.mode)               #获取图像的颜色模式
    im.rotate(45).show()         #将图像旋转45°后显示
    

    * P87 实践与体验 编程实现图像的简单处理

    from PIL import Image
    import numpy as np
    import matplotlib. pyplot as plt
    img=np.array(Image.open('lena.jpg').convert('L'))
    rows, cols=img.shape                 #图像尺寸分别赋值
    for i in range(rows):                #依次取每个像素的坐标
        for j in range(cols):
            if(img[i,j]>128):            #像素值大于128,赋值1,否则为0
                img[i,j]=1
            else:
                img[i,j]=0
    plt.figure("lena")                   #指定当前绘图对象
    plt.imshow(img,cmap='gray')          #显示灰度图像
    plt.axis('off')                      #关闭图像坐标
    plt.show()                           #弹出包含了图片的窗口
    

    P88 思考与练习1 表达式或程序语句的值

    (1)123%100
    (2)len("Hello Leo!")
    (3)abs(-12)
    (4)data=[172,9,165,29,156,21]
        max(data)
    

    P89 思考与练习6 turtle画图

    import turtle
    t=turtle.Pen()
    turtle.bgcolor("white")
    colors=["red","green","blue","yellow"]
    for x in range(100):
        t.pencolor(colors[x%4])
        t.circle(x)
        t.left(91)
    

    3.3 简单算法及其程序实现

    P91 根据灰度值判断黑白

    R=43
    G=10
    B=241
    Gray_scale=0.299*R+0.587*G+0.114*B
    if Gray_scale<132:
        print("黑色")
    else:
        print("白色")
    

    P91 枚举求整数的因子

    x=int(input("请输入整数x:"))
    i=1
    while i<=x-1:
        if x%i==0:
            print(i)
        i=i+1
    

    P92 给定多个像素点判断颜色

    count=0
    Gray_scale=47,178,146,185,116
    for i in range(0,len(Gray_scale)):
        if Gray_scale[i]<132:
            print("第"+str(i+1)+"个像素为黑色;")
            count=count+1
    print("黑色像素总共有:"+str(count)+"个。")
    

    P93 读入颜色数据判断是否填涂

    fname= input("请输入文件名称:")
    f= open(fname, "r+")                    #以读写的方式打开文件
    count=0
    line= f.readline()                      #从文件中读取一行
    while line:                             #当line非空(从文件读取到了数据
        line=line.split()                   #把空白字符去除,变成包含三个str的list
        R,G,B= map(int, line)               #把line中三个str转化成int并赋值给R,G,B
        if 0.299*R+0.587*G+0.144*B<132:
            count= count +1
        line=f.readline()                   #继续读取一行
    print(count)
    
    if count >= 300*0.64:
        print("已填涂!")
    else:
        print("未填涂!")
    f.close()
    

    P93 拓展链接 文件读写

    >>> f = open('test.txt','r')
    >>> f.read()
    'Hello, world!'
    

    调用open()函数打开由参数指定的文件对象,参数'r'表示读文本文件模式,参数'w'表示写文本文件模式,'r+'模式则表示在打开一个文本文件同时允许读和写。调用read()函数会一次性读取文件的全部内容

    for line in f.readlines():
        print(line.strip())                 #strip()把末尾的'\n'删掉
    

    文件使用完毕后必须关闭,操作系统才会把内存中的待写入的数据全部写入磁盘

    >>> f.close()
    

    将"Hello, world!"写入test.txt

    >>> f = open('test.txt','w')
    >>> f.write('Hello, world!')
    >>> f.close()
    

    P94 自定义判断黑白函数

    def bw_judge(R,G,B):
        Gray_scale=0.299*R+0.587*G+0.114*B
        if Gray_scale<132:
            color="黑色"
        else:
            color="白色"
        return color
    

    P95 读取图像判断是否填涂

    from PIL import Image
    im = Image.open("RGB.bmp")
    pix = im.load()
    width = im.size[0]                            # size中有两个参数,第1个参数为图像宽度值
    height = im.size[1]                           # 第2个参数为图像高度值
    count=0
    for x in range(width):
        for y in range(height):
            R,G,B = pix[x, y]                     # 根据像素坐标获得该点的 RGB 值
            if bw_judge(R,G,B)=="黑色":            # bw_judge函数用于判断黑、白像素
                count=count+1
    if count>=width*height*0.64:
        print("已填涂!")
    else:
        print("未填涂!")
    

    P97 准考证填涂识别

    def bw_judge(R, G, B):                        # bw_judge用于判断一个像素的填涂情况
        Gray_scale = 0.299 * R + 0.587 * G + 0.114 * B
        return Gray_scale < 132
    
    def fill_judge(x, y):                         # fill_judge用于判断信息点的填涂情况
        count = 0
        for i in range(x, x + fill_width + 1):
            for j in range(y, y + fill_height + 1):
                R, G, B = pixels[i, j]
                if bw_judge(R, G, B) == True:
                    count = count + 1
        if count >= fill_width * fill_height * 0.64:
            return True
    
    from PIL import Image
    x_start = 12                         # 起始点坐标
    y_start = 92
    fill_width   = 24                    # 信息点宽度
    fill_height  = 12                    # 信息点高度
    space_width  = 16                    # 间隔宽度
    space_height = 15                    # 间隔高度
    num_length = 9                       # 准考证号长度
    
    total_width  = fill_width + space_width
    total_height = fill_height + space_height
    image = Image.open("fill.bmp")
    pixels = image.load()
    number = ""
    
    for col in range(num_length):         # x从左至右,y从上至下对填涂区进行检测
        for row in range(10):
            x = x_start + total_width  * col
            y = y_start + total_height * row
            if fill_judge(x, y) == True:
                number = number + str(row)
                break
        else:                            # 10个信息点检测完毕后未发现有填涂
            number = number + '#'
    print(number)
    

    * P99 实践与体验 图像字符画

    from PIL import Image
    serarr=['@','#','$','%','&','?','*','o','/','{','[','(','|','!','^','~','-','_',':',';',',','.','`',' ']
    count=len(serarr)
     
    def toText(image_file):
       asd =''                                      # 储存字符串
       for h in range(0,  image_file.size[1]):      # 垂直方向
          for w in range(0, image_file.size[0]):    # 水平方向
             r,g,b =image_file.getpixel((w,h))
             gray =int(r* 0.299+g* 0.587+b* 0.114)
             asd=asd+serarr[int(gray/(255/(count-1)))]
          asd=asd+'\r\n'
       return asd
     
    image_file = Image.open("boy.jpg")              # 打开图片
    image_file=image_file.resize((int(image_file.size[0]*0.9), int(image_file.size[1]*0.5)))   #调整图片大小
    
    tmp=open('boy.txt','a')
    tmp.write(toText(image_file))
    tmp.close()
    

    第四章 数据处理与应用

    4.1 常用表格数据的处理

    4.2 大数据处理

    P114 统计文件filenmae中各单词出现的频率

    wordcount={}
    for word in open(filename,'r').read():
        wordcount[word]+=1
    

    P120 例1 创建1个seris结构类型的对象s1,存储3名同学的身高值

    import pandas as pd
    s1=pd.Series([166,178,180])
    print(s1)
    
    #创建Series对象时指定索引
    s2=pd.Series([166,178,180],index=["s01","s02","s03"])
    print(s2)
    

    P121 例2 查看例1中s1对象的index、values属性值

    for i in s1.index:
        print(i)
    for i in s1.values:
        print(i)
    for i in s1:
        print(i)
    

    P121 例3 使用相同长度的列表字典构建一个DataFrame对象df1,存储3名同学的姓名、性别、图书借阅次数数据。

    import pandas as pd
    data={"姓名":["王静怡","张佳妮","李辰武"],"性别":["女","女","男"],"借阅次数":[28,56,37]}
    df1=pd.DataFrame(data,columns=["姓名","性别","借阅次数"])
    print(df1)
    

    P121 例4 读取Excel文件“test.xlsx”中的数据,创建DataFrame对象df。

    import pandas as pd
    df=pd.read_excel("test.xlsx")
    print(df)
    

    P122 例5 查看df1对象的索引、列标题、值,并将行列转置。

    for i in df1.index:
        print(i)
    for i in df1.columns:
        print(i)
    for i in df1.values:
        print(i)
    
    print(df1.T)
    

    P122 例6 分别检索df1对象中“姓名”“借阅次数”列数据,并修改“借阅次数”列数据

    print(df1.姓名)
    print(df1["借阅次数"])
    df1.借阅次数=[30,52,68]
    print(df1)
    

    P123 例7 对df对象中的数据进行以下编辑:在最后一行追星一行数据;删除“规格”列数据;删除第一行数据。

    #添加一行数据
    df_add=df.append({"地区":"石家庄市","规格":"红富士 一级","单位":"元/500克","价格":4.00,"采价点":"集市3","采集时间":"11月中旬"},ignore_index=True)
    df_delc=df.drop("规格",axis=1)                             #删除"规格"列数据
    df_delr=df.drop(0)                                        #删除第1行数据
    

    P124 例8 将df对象中的数据按“地区”分组,并计算分组后各组数据的平均值。

    g=df.groupby("地区",as_index=False)
    print(g.mean())                                           #计算每组价格数据的平均值
    

    P124 例9 对df对象中的数据,按“价格”值降序排序。

    df_sort=df.sort_values("价格",ascending=False)            #按价格值降序排序
    print(df_sort) 
    

    P125 例10 绘制正弦曲线图。

    import numpy as np
    import matplotlib.pyplot as plt
    x=np.linspace(0,10,1000)
    y1=np.sin(x)
    y2=np.sin(x**2)
    plt.figure(figsize=(8,4))                               #创建图表对象
    
    plt.title("sin(x) and sin(x**2)")                       #设置图表标题文字
    plt.plot(x,y1,label="sin(x)",color="r",linewidth=2)     #绘制线形图
    plt.scatter(x, y2,label="sin(x**2)")                    #绘制散点图
    
    plt.ylim(-1.5,1.5)                                      #设置y坐标轴取值范围
    plt.xlim(0,10)                                          #设置x坐标轴取值范围
    plt.legend()                                            #显示图例
    
    plt.show()
    

    P126 通过统计某地姓名数据,分析当地姓氏的构成情况。

    import pandas as pd
    import matplotlib.pyplot as plt 
    import codecs                                          #处理中文utf-8编码
    from matplotlib.font_manager import FontProperties     #显示中文字体
    
    file = codecs.open('names.csv',"r","utf-8")            #打开文件
    
    # 定义复姓 list
    fx=['欧阳','太史','端木','上官','司马','东方','独孤','南宫','万俟','闻人','夏侯','诸葛','尉迟','公羊',
    '赫连','澹台','皇甫','宗政','濮阳','公冶','太叔','申屠','公孙','慕容','仲孙','钟离','长孙','宇文',
    '司徒','鲜于','司空','闾丘','子车','亓官','司寇','巫马','公西','颛孙','壤驷','公良','漆雕','乐正',
    '宰父','谷梁','拓跋','夹谷','轩辕','令狐','段干','百里','呼延','东郭','南门','羊舌','微生','公户',
    '公玉','公仪','梁丘','公仲','公上','公门','公山','公坚','左丘','公伯','西门','公祖','第五','公乘'
    ]
    
    xing = []
    j=0
    for line in file:
        if line[0:2] in fx:                                #取复姓
            xing.append(line[0:2])
        else:
            xing.append(line[0:1])                         #取单姓
        j=j+1    
    
    data={'xing':xing,"renshu":0}
    df=pd.DataFrame(data)                                  #构造DataFrame数据结构
    
    s= df.groupby('xing').count()                          #按照"xing"分组计数
    s=s.sort_values('renshu',ascending=False)              #按照"renshu"降序排列
    
    
    ax=s[0:20].plot(kind='bar',rot=0)                      #对前20绘图
    
    #显示中文标签
    font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)  
    for label in ax.get_xticklabels(): 
        label.set_fontproperties(font) 
    
    
    plt.show()     #显示图形
    print(s)
    

    本代码出现了codecs模块,是为了处理中文编码的。如果报错把codecs.py复制到当前文件夹或者添加Pythob Lib文件夹的环境变量。

    * P132 实践与体验 中文分词与标签云

    import os
    import numpy as np
    from PIL import Image
    import matplotlib.pyplot as plt
    from wordcloud import WordCloud,STOPWORDS
    d = os.path.dirname(__file__)                       #d取当前文件路径
    pic="alice_mask.png"                                #pic存放图片名称
    pic_mask = np.array(Image.open(os.path.join(d, pic)))
    
    wc = WordCloud(background_color="white", max_words=6000, mask=pic_mask, stopwords=STOPWORDS,font_path="fonts/simhei.ttf")
    wc.fit_words(wf)   #生成标签云,wf存放词语及词频
    plt.imshow(wc)     #显示图片
    

    P138 思考与练习 使用Python中文分词模块jieba,体验中文分词

    import jieba                                        #引用jieba分词模块
    text = open('file_name.txt','r').read()             #读入文本文件
    seg_list = jieba.cut(str_delete,cut_all=True)       #全模式分词
    print("全模式分词:"," ".join(seg_list))
    seg_list = jieba.cut(text)                          #默认模式分词
    print("全模式分词:"," ".join(seg_list))
    

    4.3 大数据典型应用

    * P142 实践与体验 出租车轨迹可视化分析

    import matplotlib.pyplot as plt
    
    def plot_file (file):                              #绘制每个文件的GPS坐标轨迹
        i=0
        jd=[] #经度
        wd= [] #纬度
        for line in open (file) :
            i=i+1 #切分行数据
            splitline=line.split(',')                 #取轨迹坐标
            x=float(splitline[4])
            y=float(splitline[5])
            jd.append(x)
            wd.append(y)
        plt.plot(jd,wd)                              #画点
    filename='xyz.txt'
    plot_file(filename)
    plt.show()
    

    第五章 人工智能及应用

    5.1 人工智能的产生与发展

    5.2 人工智能的应用

    5.3 人工智能对社会的影响

    大佬您太强了,还请多多指教哎
  • 相关阅读:
    javascript的自定义对象
    解决trim兼容性
    AJAX
    javascript中的默认对象
    js原始数据类型
    javascript的内置对象
    空判断啊
    javascript的继承
    html如何设置P的高度为零?
    asp.net 生成静态页 自动分页
  • 原文地址:https://www.cnblogs.com/BobHuang/p/15621121.html
Copyright © 2011-2022 走看看