# python 期末项目 **Repository Path**: zhou_xin_yu/python---final-project ## Basic Information - **Project Name**: python 期末项目 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-16 - **Last Updated**: 2021-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # python 期末项目 | 产品名称 | 综合学习展示 | |------|---------------------------------------------------------| | 产品描述 | 一款整合了高德 API 中的地理编码和步行路径规划功能,在下方输入结构化地址即可获得步行路径规划和学生管理系统 | | url | http://zhouxinyu170322.pythonanywhere.com/ | | 作者 | 周欣雨 | ### 项目名称 综合学习展示是这学期python学习成果的展示,结合API课程,主要运用简单的boost trap页面,flask web部署,并上传python anywhere。 ### 项目功能流程图 ![项目功能流程图](https://images.gitee.com/uploads/images/2021/0124/185716_09b47625_5329181.jpeg "项目流程图.jpg") ![网站部署](https://images.gitee.com/uploads/images/2021/0124/185802_3cb292e0_5329181.jpeg "网站部署流程图.jpg") ### 价值主张 - 为用户提供短途路径规划 - 通过学生管理登录系统完成增删改学生数据 ### 项目加值 - 利用高德提供的 地理编码API、路径规划API - 利用MySQL数据库 - 使用boosttrap 页面框架 ### 运用相关知识 - 利用python语言、flask web和HTML和boosttrap搭建网站框架,高德API调用,MySQL存储数据,实现前端后端交互,并完成python anywhere的云部署 # 问题表述 ### 项目基本功能: 实现登录学习管理系统并可以添加,修改,删除学生相关信息等基本操作。 ### 项目核心功能 - 为用户提供短途路径规划 - 通过学生管理登录系统完成增删改学生数据 ### 用户痛点及解决方案和用户画像 | 用户 | 痛点 | 解决方案 | |-----|-----------------------------|----------------------| | 学生 | 想核对个人信息是否准确,但通过学校层层管理人员手续复杂 | 登录学生管理系统完成个人信息的核对或改正 | | 上班族 | 来到新地点参加某活动但不熟悉路程 | 登录路径规划网站,通过轻量级程序完成路径优选 | # 解决方案表述 ### 项目整体规划 - 根据方案可行性进行大致构思项目所需界面及主要功能 - 使用flask web以及数据库功能完成登陆注册 - 调试好API功能应用及主功能代码 - 完成HTML界面 - 利用pythonnaywhere云端部署项目 # 所用到的python知识点 ### if判断语句与for循环语句的使用 python中条件判断主要根据缩进和冒号进行判断,假如if中的条件为True,则执行if下一行缩进的print语句,否则什么也不做。 下面的语句则添加了else条件,当if条件为True时执行后面缩进的print语句,否则执行else后面缩进的语句。 ![if条件语句](https://images.gitee.com/uploads/images/2021/0124/203755_7b7f38e4_5329181.jpeg "if 条件语句.jpg") - 学习了for、if、while的语法使用,在实际情况中嵌套使用 - 在处理死循环语句中,可以用到break和continue。 - break用于满足条件后退出;continue用于不满足条件,则继续执行循环 - end 不换行,将回车 转换 为空格 ### 函数的封装,模块的调用 - 模块管理函数就是将函数的定义放到一个.py文件中.可以在其他.py文件中通过import关键字导入模块.导入后就可以使用模块名+函数名的方式去使用其他模块中的函数.(也就是说把一个函数独立封装到一个py文件中,在另一个py文件中,要想使用这个函数,首先导入模块名,然后再调用模块中的函数名(模块名就是把函数封装到那个py文件的文件名。 ``` 要想使用模块中的函数需要:模块名+函数名 import module #这个module就是封装函数的那个文件名 aa = module.sum(1, 2) #模块名.函数名 print(aa) ``` ``` 导入指定模块中指定的函数:form 模块名 import 函数名 form module import count_letter_number #例如导入以下函数 ​ import的功能:相当于把被导入的模块中的代码拷贝到import的位置. ``` ``` 如果函数名相同,我们又想不改变函数名.可以通过as关键字可以更改模块名和函数名.目的是防止命名相同,产生冲突. ​ form module import count_letter_number as sum #这里的sum是将封装好的函数名count_letter_number在调用时零时更改为sum ​ 注意: 函数如果同名:后面的函数会覆盖前面的函数.模块下的函数名与被导入模块中的函数名相同时,则会执行模块下的函数,不会执行模块中的函数. ``` ``` if __name__ == '__main__': #把它看成一把闭加锁 使用它就相当于一把锁.把执行语句放在它下面可以阻止其它模块去执行这些内容.要想不被模块调用函数中的执行语句,就把函数名放在它下面,保护起来. ``` ``` def count_letter_number(string): letter_count = 0 digit_count = 0 for ch in string: if 'a' <= ch <= 'z' or 'A' <= ch <= 'Z': letter_count += 1 elif '0' <= ch <= '9': digit_count += 1 return letter_count, digit_count ​ # 比如我们只想导入以上这一部分函数,不需要导入以下的main()函数,那么我们就把main()函数执行的返回值放在if里面.main()函数只能在本文件名中执行,不会被其他模块调用. ​ def main(): print(count_letter_number('a1b2c3d4')) # (4, 4) print(count_letter_number('a123456b')) # (2, 6) #执行语句 print(count_letter_number('123456!!')) # (0, 6) ​ if __name__ == '__main__': main() # 总结:如果对封装的函数返回的结果不想在导入的模块中执行,那么就把函数执行返回的函数名放在if __name__ == '__main__':下面保护起来.它就相当于一把闭加锁. ``` - 嵌套字典的取值 - 列表元素的添加 - flask web的使用 ### python anywhere的部署(以学生管理系统为例) - 建立 mysite 文件 - 上传mysql_student.zip - 进入控制台 ls ,unzip mysql_student.zip,mv mysql_student/* mysite - 创建数据库 databases - 存储数据 database host adress: username:默认端口3306 - 创建users - 上传user.sql (点击consoles 进入控制台) - 输入 mysql -h database host adress:-u username:-p数据库密码 - show databases - use 数据库名 - source 路径/user.sql - use 数据库名: - show tables: - select * from student; - add flask 3.8 next - 进入控制台,退出MySQL (CTRLz) - 安装 pip3 install pymysql --user pip3 install flask --user - 进入python环境 python3 - import pymysql - 退出python环境quit() 并且再次reload - 修改链接 files——>mysite——>mysqlweb.py 分别为host,user,password,db - 进入web ——>reload # 云端项目部署的基本描述 [主页](http://zhouxinyu170322.pythonanywhere.com/ ) ![主页](https://images.gitee.com/uploads/images/2021/0124/210850_bacab2d4_5329181.jpeg "路径规划.jpg") [项目页](http://zhouxinyu170322.pythonanywhere.com/zhuye) ![项目页](https://images.gitee.com/uploads/images/2021/0124/211324_ae5056c9_5329181.jpeg "zhuye.jpg") [login页](http://zxyxmg.pythonanywhere.com/login) ![login页](https://images.gitee.com/uploads/images/2021/0124/211416_930e7b63_5329181.jpeg "登录系统.jpg") [addlogin页](http://zxyxmg.pythonanywhere.com/addlogin) ![addlogin](https://images.gitee.com/uploads/images/2021/0124/211551_db87068b_5329181.jpeg "登录成功.jpg") ![筛选](https://images.gitee.com/uploads/images/2021/0124/211653_77a121a1_5329181.jpeg "筛选学生表单.jpg") ![修改](https://images.gitee.com/uploads/images/2021/0124/211724_5411ce29_5329181.jpeg "修改.jpg") ![修改成功](https://images.gitee.com/uploads/images/2021/0124/211741_fc0c089a_5329181.jpeg "修改成功.jpg") # 学习/实践心得总结及感谢 ### 学习/实践心得总结: - python的学习过程比较枯燥,一开始掌握不了里面的逻辑,学习比较吃力,非常感谢我们的老师游鸽,上课讲课非常详细仔细,甚至有时候会手把手帮助我们解决报错的代码问题。 - python这个考验代码功底的课程让我吃了不少苦头,一千零一次想放弃,甚至是一开始安装pycharm anaconda的时候就出现了很多问题,我对电脑很白痴,甚至不知道在哪里可以配置环境变量,通过网上搜索各种博客的教程,找出和自己具有相同问题的文章,一步一步的做,但是往往不尽人意还是会报错。中途踩了很多坑,但是成败往往只在一瞬间,当我通过自己的摸索解决了的时候,成就感爆棚。 - 以后也会继续学习python,让自己沉静下来,我发现我的代码能力的提升不仅仅是老师课堂上的训练,课下也需要自己多钻研,然而我就是缺少这种耐心钻研的能力 - 通过python的学习,我理解到了合作的重要性,要在同学之间多交流学习,非常感谢游老师组织的帮扶队同学,还有茜谕同学,帮我解决了不少问题。 ### 有效外链和我踩过的坑总结 - CSS和HTML不在同一文件下要复制相对路径且要在前面加.. [html不同界面跳转问题](https://blog.csdn.net/Ada_lake/article/details/89956457?utm_source=app&app_version=4.5.0) - MySQL配置环境变量 1.要在系统变量(s)里添加MYSQL_HOME 2. 且值为安装MySQL的路径(bin之前!!) 3.最后在系统变量path 里面添加 %MYSQL_HOME%\bin (英文;)检查总path 前后均有; (添加路径后要点三个确定!) ​​ [MySQL配置环境变量问题](https://blog.csdn.net/weixin_49879718/article/details/107883543?utm_source=app&app_version=4.5.0) - PythonAnywhere 注册不成功send feedback 也无效 (通常能成功) 竟然要用梯子 - 已经安装Python 但cmd 无法执行 打开设置 — 应用—应用执行别名— 关闭APP Installer (Python.exe)和 APP Installer (Python3. exe) 尝试无用方法:在用户环境变量(OneDrive)里删除 %USERPROFILE%\AppData\Local\Microsoft\WindowsApps ​​​ [安装了python但cmd无法执行](https://www.cnblogs.com/lza945/p/13287158.html) - raiseReadTimeoutError(self._pool, None, “Read timed out.”)pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org’, port=443): Read timed out. 安装失败 :连接慢 超时问题 输入:pip --default-timeout=1000 install -U 模块名 [安装模块失败超时问题](https://blog.csdn.net/weixin_41665637/article/details/105028725) - jupyter notebook 闪退问题 前提:jupyter 是anaconda3环境下 一. python -m pip install -- upgrade pip python -m pip install jupyter 二. path 中添加环境变量 C:\Users\xxx\AppData\Local\Programs\Python\Python36\lib\site-packages 三. 以管理员身份打开cmd 输入 python -m jupyter 四. cmd jupyter notebook [jupyter notebook闪退问题](https://blog.csdn.net/qxqxqzzz/article/details/93791546) - 安装flask——bootstrap [安装flask_bootstrap](https://blog.csdn.net/bbwangj/article/details/105497578) - pythonanywhere 部署 [pythonanywhere 部署](https://b23.tv/Hb12dK) - conda不是内置环境 [conda不是内置环境](https://blog.csdn.net/mars_xiaolei/article/details/82798640) - Windows10下用Anaconda3安装TensorFlow教程 [Windows10下用Anaconda3安装TensorFlow教程](https://www.cnblogs.com/HongjianChen/p/8385547.html) - 解决Script file ‘D:\anaconda\Scripts\pip-script.py’ is not present.问题-记录在anaconda中安装库失败的经验 [输入链接说明](https://blog.csdn.net/weixin_37647148/article/details/106478321?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4.control) - 安装anaconda和TensorFlow ,并在pycharm中进行配置 [安装anaconda和TensorFlow ,并在pycharm中进行配置](https://blog.csdn.net/huiyanfei/article/details/79048556) - 入门到卸载:Anaconda3安装与Python3.8.1兼容配置 [入门到卸载:Anaconda3安装与Python3.8.1兼容配置](https://blog.csdn.net/icysoda/article/details/104166067)