精华内容
下载资源
问答
  • python期末大作业

    2018-07-03 13:45:57
    py期末大作业,使用了网络编程、多线程、wxpython做界面、爬虫、xlwt操作excel和matplotlib进行电影种类的分析。主要爬取的内容是豆瓣热门电影,有界面和输出日志,可以把爬取信息输出为excel并绘制成图片。
  • - Python语言期末大作业 2014 / 2015 学年 第 二 学期 报告题目 使用smtplib和email模块发送邮件 专 业 软件工程嵌入式培养 学 生 姓 名 夏何辉 班 级 学 号 B14041431 任 课 教 师 朱立华 教 师 单 位 计算机软件...
  • python天气预报语音播报邮箱小工具(期末大作业之我爱python) 实现功能: 生成一个自动化发邮箱的小程序,每天给女朋友or暗恋的小姑娘发天气预报 用来逗女朋友开心~~ 话不多说,直接先上代码!!! import smtplib#...

    python天气预报语音播报邮箱小工具(期末大作业之我爱python)

    实现功能:
    生成一个自动化发邮箱的小程序,每天给女朋友or暗恋的小姑娘发天气预报 用来逗女朋友开心~~
    话不多说,直接先上代码!!!

    import smtplib#构造简单邮件传输协议
    from email.header import Header#导入email模块中的header函数
    from email.mime.text import MIMEText#导入email模块中的mime.text函数
    from email.mime.image import MIMEImage#导入email模块中的mime.image函数
    from email.mime.multipart import MIMEMultipart#导入email模块中的mime.multipart函数
    from aip import AipSpeech#导入百度AIP
    import requests
    import time
    
    def emailsend(act_mail,title_text,text):#定义收件人和邮件内容
        DIY(text)
        sd_mail='在这里输入你的邮箱'#定义发件人
        sd_pass='在这里输入你的密匙'#sd_mail的密匙
        mail_body=MIMEMultipart('mixed')#定义邮件整体且其对象类型定义为混合型
        #定义头尾信息(没有也不影响代码的运行)
        mail_body['From']=sd_mail+'<'+sd_mail+'>'
        mail_body['To']=act_mail
        #邮件的标题
        body_head='你的天气预报来啦!'+title_text
        mail_body['subject']=Header(body_head,'utf-8')#此行代码主要是用'subject'定义了发送的邮件主题
        #构造图片
        img_fil = open('image/weather.jpg','rb').read()
        mail_img=MIMEImage(img_fil)
        mail_img.add_header('Content-ID','<image1>')
        mail_img["Content-Disposition"] = 'attachment; filename="Hatsune Miku.jpg"'
        mail_body.attach(mail_img)
        #发送邮件附件
        adc=open('这是你的萝莉音.mp3','rb').read()#此处采用了萝莉音。你也可以不采用萝莉音,大叔?
        mail_adc=MIMEText(adc,'base64','utf-8')
        mail_adc['Content-Type']='application/octet-stream'
        mail_adc.add_header('Content-Disposition','attachment',filename='Lolita.mp3')
        mail_body.attach(mail_adc)
        #发送邮件内容
        body_main_string=text
        body_main=MIMEText(body_main_string,'plain','utf-8')
        mail_body.attach(body_main)
        ftp=smtplib.SMTP('smtp.qq.com',25)#定义接口,网口号为25
        ftp.login(sd_mail,sd_pass)#登录扣扣邮箱
        ftp.sendmail(sd_mail,act_mail,mail_body.as_string())#发送邮件
        ftp.quit()#结束
    
    def DIY(text):
        one='输入你的API_ID'#API_ID
        two='输入你的API_KEY'#API_KEY
        three='输入你的SECRER_KEY'#SECRER_KEY
        client = AipSpeech(one,two,three)#用AipSpeech方法将文字转码为声音
        result = client.synthesis(text, 'zh', 1,{'spd':3,'pit':6,'vol': 5, 'per': 4})
        '''
        主要参数:
        spd:语速,取值0—9,默认为5中语速(非必须)
        pit:音调,取值0—9,默认为5中音调(非必须)
        vol:音量,取值0—9,默认为5中音量(非必须)
        per:发音人选择,0位女声,1为男声,3为情感合成-度逍遥,4为情感-度YY,默认为普通女(非必须)
        '''
        if not isinstance(result, dict):  # 如果result不是dict(字典)
            with open('这是你的萝莉音.mp3', 'wb') as f:#将语音转为mp3文件
                f.write(result)#在兄弟目录下生成文件,新文件将会覆盖旧文件
    
    def capture():#我没有采用爬虫,而是采用了接口,嗯,接口稳定多了,咳咳。其实就是懒得看爬虫,急着交大作业
        url='https://api.heweather.net/s6/weather/forecast?location=auto_ip&key=aed1ba57bc0a40e596fed6a582ec4726'
        result=requests.get(url).json()
        #进行解码
        boxto=['0状态码','1.天气预报时间','2.白天天气状况','3.夜间天气状况','4.最高温','5.最低温','6.相对湿度','7.紫外线强度','8.风力','9.日升日落']
        msg0=result['HeWeather6'][0]['status']
        while msg0=='ok':
            for i in range(3):
                #msg0=result['HeWeather6'][0]['status']
                msg1=boxto[1]+result['HeWeather6'][0]['daily_forecast'][i]['date']
                msg2=boxto[2]+result['HeWeather6'][0]['daily_forecast'][i]['cond_txt_d']
                msg3=boxto[3]+result['HeWeather6'][0]['daily_forecast'][i]['cond_txt_n']
                msg4=boxto[4]+result['HeWeather6'][0]['daily_forecast'][i]['tmp_max']+'摄氏度'
                msg5=boxto[5]+result['HeWeather6'][0]['daily_forecast'][i]['tmp_min']+'摄氏度'
                msg6=boxto[6]+result['HeWeather6'][0]['daily_forecast'][i]['hum']
                msg7=boxto[7]+result['HeWeather6'][0]['daily_forecast'][i]['uv_index']
                msg8=boxto[8]+result['HeWeather6'][0]['daily_forecast'][i]['wind_sc']
                msg9=boxto[9]+' 早晨 '+result['HeWeather6'][0]['daily_forecast'][i]['sr']+' 至 '+' 下午 '+result['HeWeather6'][0]['daily_forecast'][i]['ss']
                ttry=[msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9]
                end=''
                #解码完成
                for k in ttry:
                    end+=k+'\n'
                if i==0:
                    No_1=end+'\n\n\n'
                elif i==1:
                    No_2=end+'\n\n\n'
                elif i==2:
                    No_3=end+'\n\n\n'
                else :
                    break
            break
        box=No_1+No_2+No_3
        return box
    
    text=capture()
    act_mail_class = {'A.大哥:': '大哥的邮箱', 'B.关羽:': '关羽的邮箱'}# 收件人参数
    act_len=len(act_mail_class)
    for i in range(act_len):
        for key_1 in act_mail_class:
            print(key_1)
        order_send=input('请输入想要发送的人【列如:发给大哥就输入:a(不分大小写)】')
        order_send=order_send.title()
        for key in act_mail_class:
            if order_send[0]==key[0]:
                send_middle=act_mail_class[key]
                emailsend(send_middle,key[2:],text)
        print('发送完成')
        time.sleep(1.5)
        fily=input('如果你想结束请输入1\n')
        end=eval(fily)
        if end==1:
    

    只要你稍微更改一下扣扣账号然后注册一个和风天气的密匙就可以直接拿去玩了,哈哈
    下面,为小白剖析讲解一下这个过程

    用到的库:
    import smtplib#构造简单邮件传输协议 from email.header import Header#导入email模块中的header函数 from email.mime.text import MIMEText#导入email模块中的mime.text函数 from email.mime.image import MIMEImage#导入email模块中的mime.image函数 from email.mime.multipart import MIMEMultipart#导入email模块中的mime.multipart函数 from aip import AipSpeech#导入百度AIP import requests import timesmtplib模块用来构造一个传输协议
    email模块你可以全部导入也可以导入里面的几个函数(header , mime.text , mime.image , mime.multipart),随你心意
    requests库用来访问url
    time库可导可不导,看你心情发挥
    API我用的是百度的,所以导入了Aipspeech(用API关键是萝莉音语音播报的功能实现,如果不喜欢这个功能就不要导入这个函数库叭)

    第一部分:
    1.首先去QQ邮箱
    打开 设置-账户-开启服务-开启POP3/SMTP服务,然后点击生成授权码,python发送邮件要用。
    不会可以参考菜鸟教程
    在这里插入图片描述
    2.推荐使用和风天气API(强烈推荐付费版,一两块钱就可以访问一两千次,主要是稳定)
    2.1浏览器打开和风天气
    在这里插入图片描述
    2.2:自己注册一个账号后打开控制台
    在这里插入图片描述
    2.3:点击登录
    在这里插入图片描述
    2.4:打开开发文档:
    在这里插入图片描述
    2.5:点击快速开始,并且仔细阅读:
    红色剪头指向的三个重点工具,里面说的很详细,关于如何使用。
    在这里插入图片描述
    2.6:特别提醒,当后面程序访问报错的时候一定要仔细阅读错误码,然后再去检查程序。
    在这里插入图片描述
    代码块:

    def capture():
        url='https://api.heweather.net/s6/weather/forecast?location=auto_ip&key=aed1ba57bc0a40e596fed6a582ec4726'#和风天气的url
        result=requests.get(url).json()
        #进行解码
        boxto=['0状态码','1.天气预报时间','2.白天天气状况','3.夜间天气状况','4.最高温','5.最低温','6.相对湿度','7.紫外线强度','8.风力','9.日升日落']#根据你的需求去解码,在开发文档里面很清晰,他的返回全部是字典嵌套格式。
        msg0=result['HeWeather6'][0]['status']
        while msg0=='ok':
            for i in range(3):
                #msg0=result['HeWeather6'][0]['status']
                msg1=boxto[1]+result['HeWeather6'][0]['daily_forecast'][i]['date']
                msg2=boxto[2]+result['HeWeather6'][0]['daily_forecast'][i]['cond_txt_d']
                msg3=boxto[3]+result['HeWeather6'][0]['daily_forecast'][i]['cond_txt_n']
                msg4=boxto[4]+result['HeWeather6'][0]['daily_forecast'][i]['tmp_max']+'摄氏度'
                msg5=boxto[5]+result['HeWeather6'][0]['daily_forecast'][i]['tmp_min']+'摄氏度'
                msg6=boxto[6]+result['HeWeather6'][0]['daily_forecast'][i]['hum']
                msg7=boxto[7]+result['HeWeather6'][0]['daily_forecast'][i]['uv_index']
                msg8=boxto[8]+result['HeWeather6'][0]['daily_forecast'][i]['wind_sc']
                msg9=boxto[9]+' 早晨 '+result['HeWeather6'][0]['daily_forecast'][i]['sr']+' 至 '+' 下午 '+result['HeWeather6'][0]['daily_forecast'][i]['ss']
                ttry=[msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9]
                end=''
                #解码完成
                for k in ttry:
                    end+=k+'\n'
                if i==0:
                    No_1=end+'\n\n\n'
                elif i==1:
                    No_2=end+'\n\n\n'
                elif i==2:
                    No_3=end+'\n\n\n'
                else :
                    break
            break
        box=No_1+No_2+No_3
        return box#返回了一段基础天气信息的文本
    

    这个函数功能就是进入和风天气提供的接口(API)里面找到一些我们需要的天气预报信息,然后提取解码成人类看得懂的语言,返回文本出来。

    3.萝莉音~~功能实现:要采用间接访问,不能用直接访问,不然后面打包的时候会出错

    def DIY(text):
        one='输入你的API_ID'#API_ID
        two='输入你的API_KEY'#API_KEY
        three='输入你的SECRER_KEY'#SECRER_KEY
        client = AipSpeech(one,two,three)#用AipSpeech方法将文字转码为声音
        result = client.synthesis(text, 'zh', 1,{'spd':3,'pit':6,'vol': 5, 'per': 4})
        '''
        主要参数:
        spd:语速,取值0—9,默认为5中语速(非必须)
        pit:音调,取值0—9,默认为5中音调(非必须)
        vol:音量,取值0—9,默认为5中音量(非必须)
        per:发音人选择,0位女声,1为男声,3为情感合成-度逍遥,4为情感-度YY,默认为普通女(非必须)
        '''
        if not isinstance(result, dict):  # 如果result不是dict(字典)
            with open('这是你的萝莉音.mp3', 'wb') as f:#将语音转为mp3文件
                f.write(result)#在兄弟目录下生成文件,新文件将会覆盖旧文件
    
    def capture():
        url='https://api.heweather.net/s6/weather/forecast?location=auto_ip&key=aed1ba57bc0a40e596fed6a582ec4726'
        result=requests.get(url).json()
        #进行解码
        boxto=['0状态码','1.天气预报时间','2.白天天气状况','3.夜间天气状况','4.最高温','5.最低温','6.相对湿度','7.紫外线强度','8.风力','9.日升日落']
        msg0=result['HeWeather6'][0]['status']
        while msg0=='ok':
            for i in range(3):
                #msg0=result['HeWeather6'][0]['status']
                msg1=boxto[1]+result['HeWeather6'][0]['daily_forecast'][i]['date']
                msg2=boxto[2]+result['HeWeather6'][0]['daily_forecast'][i]['cond_txt_d']
                msg3=boxto[3]+result['HeWeather6'][0]['daily_forecast'][i]['cond_txt_n']
                msg4=boxto[4]+result['HeWeather6'][0]['daily_forecast'][i]['tmp_max']+'摄氏度'
                msg5=boxto[5]+result['HeWeather6'][0]['daily_forecast'][i]['tmp_min']+'摄氏度'
                msg6=boxto[6]+result['HeWeather6'][0]['daily_forecast'][i]['hum']
                msg7=boxto[7]+result['HeWeather6'][0]['daily_forecast'][i]['uv_index']
                msg8=boxto[8]+result['HeWeather6'][0]['daily_forecast'][i]['wind_sc']
                msg9=boxto[9]+' 早晨 '+result['HeWeather6'][0]['daily_forecast'][i]['sr']+' 至 '+' 下午 '+result['HeWeather6'][0]['daily_forecast'][i]['ss']
                ttry=[msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9]
                end=''
                #解码完成
                for k in ttry:
                    end+=k+'\n'
                if i==0:
                    No_1=end+'\n\n\n'
                elif i==1:
                    No_2=end+'\n\n\n'
                elif i==2:
                    No_3=end+'\n\n\n'
                else :
                    break
            break
        box=No_1+No_2+No_3
        return box
    
    

    这一个函数的功能就是讲一段文本(上一个函数得到的天气预报文本)丢到百度API这个接口里面把它转变为音频,嗯,有恩多种音调,选你喜欢的就好。
    不得不数百度API真的是太强大了。很有很多其他功能非常好用,老司机都懂。
    详情怎么文字转语音请看这位大佬的文章,说的很详细

    4.构造邮箱函数:

    def emailsend(act_mail,title_text,text):#定义收件人和邮件内容
        DIY(text)
        sd_mail='发件人的邮箱'#定义发件人
        sd_pass='你创建的密匙'#sd_mail的密匙
        mail_body=MIMEMultipart('mixed')#定义邮件整体且其对象类型定义为混合型,你也可以创建其他类型,可以去看开发文档
        #定义头尾信息(没有也不影响代码的运行,但是可能会被放到垃圾邮箱里)
        mail_body['From']=sd_mail+'<'+sd_mail+'>'
        mail_body['To']=act_mail
        #邮件的标题
        body_head='你的天气预报来啦!'+title_text
        mail_body['subject']=Header(body_head,'utf-8')#此行代码主要是用'subject'定义了发送的邮件主题
        #构造图片,后面用到访问的时候应该采用间接访问
        img_fil = open('image/weather.jpg','rb').read()
        mail_img=MIMEImage(img_fil)
        mail_img.add_header('Content-ID','<image1>')
        mail_img["Content-Disposition"] = 'attachment; filename="Hatsune Miku.jpg"'
        mail_body.attach(mail_img)
        #发送邮件附件
        adc=open('这是你的萝莉音.mp3','rb').read()
        mail_adc=MIMEText(adc,'base64','utf-8')
        mail_adc['Content-Type']='application/octet-stream'
        mail_adc.add_header('Content-Disposition','attachment',filename='Lolita.mp3')
        mail_body.attach(mail_adc)
        #发送邮件内容
        body_main_string=text
        body_main=MIMEText(body_main_string,'plain','utf-8')
        mail_body.attach(body_main)
        ftp=smtplib.SMTP('smtp.qq.com',25)#定义接口,网口号为25
        ftp.login(sd_mail,sd_pass)#登录扣扣邮箱
        ftp.sendmail(sd_mail,act_mail,mail_body.as_string())#发送邮件
        ftp.quit()#结束
    

    这个函数就是实现了将一段确定的文本,语音,图片,自动构造成一封邮件,从你的邮箱发送给另一个人。

    5.自动化小模块

    text=capture()
    act_mail_class = {'A.大哥:': '大哥的邮箱', 'B.二哥:': '二哥的邮箱'}# 收件人参数
    act_len=len(act_mail_class)
    for i in range(act_len):
        for key_1 in act_mail_class:
            print(key_1)
        order_send=input('请输入想要发送的人【列如:发给大哥就输入:a(不分大小写)】')
        order_send=order_send.title()
        for key in act_mail_class:
            if order_send[0]==key[0]:
                send_middle=act_mail_class[key]
                emailsend(send_middle,key[2:],text)
        print('发送完成')
        time.sleep(1.5)
        fily=input('如果你想结束请输入1\n')
        end=eval(fily)
        if end==1:
            break
    
    

    嗯,最后,将这段代码打包生成exe文件。就ok了。生成一个自动化小程序,给女朋友暖暖心,或者追追暗恋的小姑娘,哈哈,小伙伴们拿去玩吧。
    附上两张效果图:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 附有详细注释,代码量满足课程要求,为博主期末大作业,附报告,需要报告的私我
  • Python 期末作业 01月9日 - 01月24日期末作业: 这是我接的某大学的期末作业pythonanywhere部署Flask项目supermonkey导航小屋,报价400 订阅专栏后,可以查看代码 1 项目名称 学生导航宝 2 价值主张宣言 刚...

    Python 期末作业 01月9日 - 01月24日期末作业:

    这是我接的某大学的期末作业:pythonanywhere部署Flask项目supermonkey导航小屋,报价400

    订阅专栏后,可以查看代码

    1 项目名称

    大学生导航宝

    2 价值主张宣言

    刚来到大学的你 面对陌生的面孔和不熟悉的城市 是否感觉内心充满困惑——去最近便利店的路该怎么走 总是在一条路上兜圈子该怎么办??

    快来使用大学生导航宝吧 让你面对陌生的城市再也不迷路 为你导航出最准确的路径 本产品运用高德开发平台中的路径规划服务进行优化 通过python搭建在pythonanywhere上的网站 为广大在异乡大学生提供最好的出行导航服务

    2.2 项目意义

    • 大学生难免考到自己不熟悉的城市 在外人生地不熟 难以了解所在城市的交通情况,对于不熟悉的城市容易出现迷路,许多地点不知道如何前往等情况
    • 该项目可以帮助远在他乡的学子规划导航行程路径 方便了大学生出行 解决了大学生面对陌生城市举步难行的情况

    2.3 页面流程图

    3.问题表述

    3.1 目标用户画像

    3.2 主要用途

    • 通过高德API平台为用户提供步行导航功能

    3.3 解决问题

    • 解决大学生刚来到一个陌生城市 而引发的一系列情况 例如对学校附近不熟悉不知道怎么去想去的地方 经常在一个地方迷路等情况 通过使用大学生导航宝的导航路径成功抵达目的地

    3.4 项目特点

    • 争对大学生主要以步行为主的出行方式进行专业化的处理 使用起来更加方便 节省用户路途上花费的时间

    3.5 价值画布

    核心价值 用户痛点
    通过导航帮助用户熟悉环境 对于新来的城市十分陌生
    帮助用户导航目的地 不知道如何前往目的地

    3.6 使用场景

    • 不知道怎么去学校附近超市的用户使用大学生导航宝进行导航 成功前往
    • 对于城市不熟悉 不知道离公交车站最近的步行方案是什么 使用大学生导航宝 成功用最短的方案抵达公交车站

    4.解决方案表述

    4.1 项目整体策划

    • 由于自己本身的经历大一时刚刚来到广州人生地不熟 经常出现迷路兜圈子的情况 即便是在学校也经常分不清哪个教学楼应该怎么走 于是便想做一个主要帮助大学生解决出现问题的项目 考虑到大部分大学生的出行方式主要是步行而且活动范围不大 于是就想借助高德API中的步行导航来完成这个项目的技术支持 帮助同学们通过步行导航慢慢熟悉周边的环境 到之后渐渐能自己出行周边区域 于是就借助python的pythonanywhere搭建了一个简单的网站 来方便同学们的出行需求

    4.2 知识点描述

    步骤描述 Python基础知识点
    调用高德API 步行导航API API的调用
    通过Flask架构网站,呈现网站页面和实现网站功能 Flask的使用和函数
    实现日志的读取和页面呈现 python日志系统
    对调用出的API所返回的参数进行选择和呈现 列表和字典取值
    修改网站样式颜色图片,优化网站布局功能 HTML和CSS样式的修改
    基于python的云端部署 Pythonanywhere云端部署

    4.3 IDEO三要素

    4.3.1 Desirability用户可欲性

    • 对于刚刚来到陌生城市的用户基本上都不太熟悉附近的环境 行动出行很不方便 这时候就需要导航的帮助 而大学生导航宝正好有这样的功能来帮助用户导航去想去目的地 帮助用户熟悉周边环境 而且网站界面操作简单 只需要输入目的地和出发点就可以实现 简单易懂方便用户出行的实用工具

    4.3.2 Feasibility技术可行性

    - 数据挖掘 因并未修数据挖掘课程,因此只能从[国家数据库](http://data.stats.gov.cn/)获取现有的数据
    - 数据清理 可行,经过一个学期对于pandas的学习,初步掌握了相关技术
    - 制表方法 可行,课程中的学习与互联网提供的帮助
    

    4.3.3Viability商业可行性

    对于即将毕业和刚刚毕业正在迈入社会的大学生而言,独自生活工作的未来较为陌生,对于心仪的工作的省份/城市不熟悉不了解,无法轻易作出抉择,还在学习的学生对于工作地的选择有一定的想法,但对于其他未涉足过的省份不了解但又充满好奇,用户需要一个提供未来居住地的选择分析来帮助年轻人了解不同的省份情况,提供更有价值的分析说明。

    5 编程功能的基本描述

    5.1 学习成本

    API的调用 整个项目的第一步去寻找适合的的API并进行调用,在这里我选择调用高德API的步行导航API,通过获取他们的秘钥以及终结点,并阅读API文档,成功调用API使得网站的功能得到初步实现

    API的调用占整个项目工作的15%,API的学习成本大约为20天。

    Flask的使用 将调用好的API通过Python的Flask模块进行网站架构,通过python的函数将API的功能实现在前端页面中,在通过Flask架设的网站成功实现功能在网站是的体现

    Flask的使用占整个项目工作的35%,Flask的学习成本大约为30天。

    HTML和CSS样式的使用 通过修改CSS样式和HTML的功能来确定网站的外观与功能界面布局样式,打造一个用户体验好界面风格清爽的网站界面内容,初步实现了网站的大体布局情况编排

    HTML和CSS样式的使用 占整个项目工作的10%,MySQL的学习成本大约为20天。

    列表和字典取值使用 由于API调用的文本数据需要呈现给用户 因此需要用到Python基础内容中的列表和字典取值的使用将API数据分析的结果 通过取值调用呈现给用户界面方便用户直接得知导航信息

    列表和字典取值占整个项目工作的10%,列表和字典取值的学习成本大约为12天。

    日志的读取和呈现 将整个网站的数据调用记录进日志以及通过浏览日志表格的形式给呈现在网站中,具备独立的后台日志管理文件,用户可以通过登录账号来查看后台的文件信息方便得知自己的出行记录规律。

    日志的读取和呈现 占整个项目工作的10%,日志的学习成本大约为2天。

    Pythonanywhere云端部署 最后一步即是在云端部署网站,使网站可以通过网站的形式在不同的设备上方便使用,这里使用Pythonanywhere进行云端部署,将成功实现的网站与功能部署在Pythonanywhere上 所有人都可以访问 方便用户进行导航。

    Pythonanywhere占整个项目工作的10%,Pythonanywhere的学习成本大约为5天。

    5.2 知识运用分布

    知识点 HTML表单、HTTP 请求 CSS样式修改 API调用 字典、列表取值 Flask 搭建网站 日志读取呈现 pythonanywhere部署
    应用比例 15% 15% 20% 10% 15% 10% 15%

    6.2 页面结构数据功能图

    6.3 云端功能

    • 可以直接在云端上修改和部署文件 可以在不同的设备上使用 方便后期进行网站优化处理 不需要python代码包
    • 用户可以直接通过访问网站来抵达我们的功能页面 方便用户使用导航功能

    6.4 部署心得

    • 一开始觉得部署pythonanywhere是一件非常简单的事情,但后来才意识到完全不是这样的,首先注册就是一大难题换了非常多的邮箱还是一直显示错误无法注册,最后采用游鸽老师的方法填写申请邮箱才成功的完成了注册,注册好之后接下来就是想要部署项目了,由于pythonanywhere可能是外网在国内访问速度非常慢所以过程也是非常艰难的,需要上传python代码包进行部署过程也是非常慢,通过控制台解压到创建好的mysite文件夹,再通过控制台进行部署操作 部署途中经常出现非常多问题,1.例如API未进入网站白名单导致图片无法显示 2.云端服务器的虚拟环境无法安装 3.部署完成后网站页面经常出现404 所以我觉得部署pythonanywhere并没有想象当中的简单 是非常艰难的过程的

    7 学习/实践心得总结及感谢

    • 完成项目依靠我们已有的编程知识是远远不够的,还需要不断地吸收其他新知识,非常感谢以下网站内容创作者的帮助
    • 感谢高德API提供的web服务
    • 感谢pythonanywhere提供的部署服务
    • 感谢菜鸟教程提供的Python3,HTML,CSS教程

    附上本项目的源码:https://gitee.com/lin-conglong/python—final-assignment.git

    展开全文
  • 2019-2020学年Python语言程序设计期末大作业,适用专业:计算机科学与技术、软件工程、数据科学等。试题:“龟兔赛跑动画开发”,包括基本要求(70分)、高级要求(30分)两部分。
  • 期末python作业

    2020-07-02 15:48:08
    python作业 摘要 这是利用python的爬虫技术完成对某网的公开数据的爬取,方便我更好的对比了解数据。 引言 网络爬虫应用智能自构造技术,随着不同主题的网站,可以自动分析构造URL,去重。网络爬虫使用多线程技术,...

    python作业

    摘要
    这是利用python的爬虫技术完成对某网的公开数据的爬取,方便我更好的对比了解数据。

    引言
    网络爬虫应用智能自构造技术,随着不同主题的网站,可以自动分析构造URL,去重。网络爬虫使用多线程技术,让爬虫具备更强大的抓取能力。对网络爬虫的连接网络设置连接及读取时间,避免无限制的等待。为了适应不同需求,使网络爬虫可以根据预先设定的主题实现对特定主题的爬取。研究网络爬虫的原理并实现爬虫的相关功能,并将爬去的数据清洗之后存入数据库,后期可视化显示。

    意义
    利用python对网站数据提取并保存

    环境准备

    python 3.8.2
    浏览器驱动器:webDriver
    安装第三方库:selenium
    在cmd下执行以下命令
    在这里插入图片描述

    开始开发

    导入模块
    在这里插入图片描述
    编写打开目标网页
    在这里插入图片描述
    首先要登录账号
    在这里插入图片描述
    在这里插入图片描述
    传入账号密码
    在这里插入图片描述
    解决滑块向右滑动并登陆
    在这里插入图片描述

    传入关键字并实现自动搜索商品
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    获取总页数
    在这里插入图片描述在这里插入图片描述
    F12发现属性值相同
    在这里插入图片描述
    for循环遍历页面数据
    在这里插入图片描述
    并以csv保存在当前目录
    在这里插入图片描述
    利用循环遍历每一页数据
    在这里插入图片描述
    结果如下:
    在这里插入图片描述
    csv文件:
    在这里插入图片描述

    展开全文
  • Python语音分析 测试技术期末大作业-声音信号分析
  • 本篇博文为博主大一Python选修课的期末作业,主要运用了Pygame叙写了一个实现小小功能的小游戏,可以随意拿去当作业上交。(程序在文底附录) 一、目标分析。 1.在屏幕下方中央生成一个炮台 2.随机生成蝙蝠并作四周...

    本篇博文为博主大一Python选修课的期末作业,主要运用了Pygame叙写了一个实现小小功能的小游戏,可以随意拿去当作业上交。(程序在文底附录)

    一、目标分析。

    1.在屏幕下方中央生成一个炮台

    2.随机生成蝙蝠并作四周反弹运动

    3.时时捕获鼠标位置,调整炮台角度

    4.鼠标点击射出炮弹

    Ⅰ.判断是否射中
    Ⅱ.射中则分数增加
    

    二、使用画图程序绘制相关图片

    1.蝙蝠: 在这里插入图片描述

    2.炮台: 在这里插入图片描述

    3.炮弹: 在这里插入图片描述

    三、程序实现。

    1.导入相关库

    import pygame,math,random
    

    2.定义炮台转动的函数—“whirl”

    1.mouse_x和mouse_y为捕获的鼠标xy轴对应坐标

    # 定义炮台转动函数
    def whirl(image,a,b):
        mouse_x,mouse_y = pygame.mouse.get_pos()
        angle = math.degrees(math.atan2(mouse_x-400,600-mouse_y)) #弧度转角度
        new_image = pygame.transform.rotate(image,-angle)
        screen.blit(new_image,(a,b))
    

    3.定义蝙蝠随机运动函数—“batmove”

    1.引入全局变量new_x和new_y方便修改蝙蝠坐标参数
    2.new_x/y为二维列表,第一个变量代表蝙蝠代号,第二个变量代表蝙蝠坐标参数xy

    # 定义蝙蝠随机运动函数
    def batmove(direction,n):
        global new_x,new_y
        if direction==1:
            new_x=locations[n][0]+speedx[n]
            new_y=locations[n][1]+speedy[n]
        elif direction==2:
            new_x=locations[n][0]+speedx[n]
            new_y=locations[n][1]-speedy[n]
        elif direction==3:
            new_x=locations[n][0]-speedx[n]
            new_y=locations[n][1]+speedy[n]
        else:
            new_x=locations[n][0]-speedx[n]
            new_y=locations[n][1]-speedy[n]
        return (new_x,new_y)
    

    3.初始化相关参数

    1.count_shell:炮弹数量
    2.count_socre:得分情况
    3.font和screen:pygame窗口中的字体和银幕大小
    4.keep_going:程序运行判断,True为继续运行,False则结束运行
    5.White和Black:为RGB参数

    # 初始化
    pygame.init()
    flag = False	#判断鼠标按下条件
    count_shell = 10
    count_score = 0
    font = pygame.font.SysFont("Arial", 24)
    screen = pygame.display.set_mode([800,600])
    keep_going = True
    White = (255,255,255)
    Black = (0,0,0)
    

    4.更改程序名称

    # 更改程序名称
    pygame.display.set_caption("Sharpshooter")
    

    5.加载背景图片

    # 加载背景图片
    background = pygame.image.load("Background.jpg")
    

    6.加载炮台、炮弹与蝙蝠

    1.bat.set_colorkey:当绘制 bat 对象时,将所有与 colorkeys 相同的颜色值绘制为透明

    # 加载炮台和蝙蝠
    cannon = pygame.image.load("Cannon.png")
    bat = pygame.image.load("Bat.jpg")
    shell = pygame.image.load("shell.png")
    colorkey = bat.get_at((0,0))
    bat.set_colorkey(colorkey)
    

    7.随机蝙蝠位置和运动方向

    # 随机蝙蝠位置和运动方向
    locations = [0]*10  #蝙蝠(x,y)位置存放
    direction = [0]*10  #随机方向
    speedx = [5]*10  #调整方向
    speedy = [5]*10
    bat_flag = [1]*10  #蝙蝠是否被击中标记
    bat_rect = bat.get_rect()   #获取蝙蝠位置
    

    8.炮弹初始化

    1.shell_x/y:设置炮台初始位置
    2.shell_angle:设置炮弹角度(默认为0)

    # 炮弹初始化
    shell_x = 400
    shell_y = 500
    shell_angle = 0
    shell_xy = (400,500)
    shell_rect = shell.get_rect()   #获取炮弹位置
    

    9.初始化随机蝙蝠位置和方向

    # 初始化随机蝙蝠位置和方向
    for n in range(10):
        locations[n] = (random.randint(200,700),random.randint(100,350))
        direction[n] = int(random.randint(1,4))
    timer=pygame.time.Clock()  #时钟
    

    10.游戏开始

    while keep_going :
        # 判断游戏是否结束
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                keep_going = False
        
        # 鼠标左键记录炮弹方位
        if event.type == pygame.MOUSEBUTTONDOWN:
            if pygame.mouse.get_pressed()[0]:  
                flag = True
            mouse_x,mouse_y = pygame.mouse.get_pos()
            shell_angle = math.atan2(mouse_x-400,600-mouse_y)
    
        '''
        # 加载背景图
        screen.blit(background,(0,0))
        '''
    
        # 绘制炮弹
        if flag:    
            new_shell = pygame.transform.rotate(shell,-math.degrees(shell_angle))
            screen.blit(new_shell,shell_xy)
            shell_x += 5*math.sin(shell_angle)
            shell_y -= 5*math.cos(shell_angle)
            shell_xy = (shell_x,shell_y)
            shell_rect[0] = shell_x - shell.get_width()/2  #修改炮弹位置
            shell_rect[1] = shell_y - shell.get_height()/2  
            
            # 判断炮弹是否越界,越界则炮弹消失
            if shell_x<=0 or shell_x+shell.get_width()>=800:
                shell_x,shell_y = 400,500
                shell_xy = (shell_x,shell_y)
                flag = False
                count_shell -= 1
            if shell_y <= 0 :
                shell_x,shell_y = 400,500
                shell_xy = (shell_x,shell_y)
                flag = False    
                count_shell -= 1
    
    
        # 绘制蝙蝠
        for n in range(10): 
            if bat_flag[n]: 
                screen.blit(bat,batmove(direction[n],n))
                
                # 判断蝙蝠是否越界,越界则更改方向
                if new_x <= 200 or new_x + bat.get_width() >= 800:
                    speedx[n] = -speedx[n]
                if new_y <= 0 or new_y+bat.get_height() >= 450:
                    speedy[n] = -speedy[n]
    
                locations[n] = (new_x,new_y)
    
    
        # 碰撞判定--💥
        for n in range(10):
            if pygame.Rect.colliderect(shell_rect,locations[n][0]-bat.get_width()/2,
                locations[n][1]-bat.get_height()/2,bat.get_width(),bat.get_height()):
                flag = False
                bat_flag[n]=0
                locations[n]=(800,600)
                shell_x,shell_y = 400,500
                shell_xy = (shell_x,shell_y)
                shell_rect = shell.get_rect()
                count_shell -= 1
                count_score += 10
    
    
        # 实时获取鼠标位置以改变炮台方向
        whirl(cannon,350,465)
    
        # 显示分数以及炮弹剩余
        draw_string = "Your score:   " + str(count_score)
        draw_string += "  -  Remaining shells : " + str(count_shell)
        text = font.render(draw_string, True, Black)
        text_rect = text.get_rect()
        text_rect.centerx = screen.get_rect().centerx
        text_rect.y = 10
        screen.blit (text, text_rect)
    
        # 游戏结束判定
        if count_shell == 0:
            if count_score == 100:
                print(f"恭喜您百发百中击杀了全部{int(count_score/10)}只蝙蝠,为新冠肺炎的抵制贡献了一大份力量!!")
            elif count_score>=5 :
                print(f"恭喜您击杀了{int(count_score/10)}只蝙蝠,为新冠肺炎的抵制贡献了一小份力量!")
            elif count_score>=1 :
                print(f"恭喜您击杀了{int(count_score/10)}只蝙蝠,为新冠肺炎的抵制贡献了一份微薄的力量!")
            else :
                print("您一只蝙蝠都没有杀死,对不起<Sharpshooter>这个称号!")          
            pygame.quit()
            exit()
    	
        # 更新画布
        pygame.display.update()
        screen.fill(White)
        timer.tick(40)  #每秒40
    

    11.游戏结束

    pygame.quit()
    

    四、附录

    百度网盘,提取码:xi99

    展开全文
  • 2020年-Python语言程序设计期末大作业(卷1、卷2、卷3),适用专业:计算机应用技术、软件技术、大数据应用技术等专业。
  • 交大python大作业

    2012-04-19 01:36:25
    本人的程序设计通识课期末大作业源代码和说明文档,欢迎大家参考,共同学习python
  • 期末大作业要求如下↓ 参考教程:https://www.cnblogs.com/gezhuangzhuang/p/10596545.html https://zhuanlan.zhihu.com/p/46595846 实验环境及工具:Python 3.7+Tensorflow 1.14(cpu版)+keras 2.31+Pycharm+...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

python期末大作业

python 订阅