文章目录

  • 前言
  • 做的东西
    • 基础
      • 1. 乘法表
      • 2. 将列表中的数字加起来
      • 3. 修改字符串
      • 4. 展示/修改货品的属性
      • 5. 函数装饰器
      • 6. 静态属性和静态方法
      • 7. 一些魔术方法的使用
    • 有意思的脚本
      • 1. 消息轰炸
      • 2. 爬取教务处通知
      • 3. 爬b站评论
      • 4. 打字吧刷成绩
      • 5. 爬正本小说
      • 6. 一些数据可视化
    • 一些项目
      • TODO LIST
      • 帅团外卖
      • 匿名聊天室(小QQ)
      • 毕业生转圈圈
      • 结语

前言

在知乎上看到这么一句话,程序员其实就是吹牛,吹的是能够实现的牛,因为我们都能够实现。所以这篇博客对于会敲代码的人来说并没有什么,只是一个记录新手的历程,和提供一些可以实现的东西作为新手的阶段性小目标。在大一的时候参加了学校工作室的考核,选的是python方向,想来自己也是做了一些有点意思的东西,虽然现在依旧是API caller,但是相对于刚敲代码还是厉害了一些的,然后也借此机会把一些七零八碎的代码放上来,把那个放代码的文件夹删了(由于下了太多库,放代码的那个文件夹已经2.62G了)。python确实是一个相当有意思的语言,有一堆黑魔法库,还有很多神奇的魔术方法。。。但是毕竟不能只会写python,要大二了,还是得学习一些其他语言的(java,go啥的)。这个博客也算是记录了我的大一吧XD

做的东西

基础

1. 乘法表

这个就是数字规律了

for j in range(1, 10):for i in range(1, j+1):print(f"{i}x{j}={i*j}  ", end="")print()

2. 将列表中的数字加起来

给定一个列表:["dsf", "dfgg", 1515, "nb", "cf", 121, "sd", 15]将里面的数字加起来,字符串剔除掉
可以用以下两种方式来判断每一个元素的类型

  1. type(i) == int
  2. isinstance(i, int)

看了下原本写的代码,写了13行,确实离谱,是新建了一个列表,然后把数字放进去,再用循环将每个元素加起来,确实非常的不pythonic
改了下,这样还行

lst1 = ["dsf", "dfgg", 1515, "nb", "cf", 121, "sd", 15]
print(sum(i for i in lst1 if isinstance(i, int) is True))

3. 修改字符串

字符串中只出现一次"w2ol",将"w2ol"替换成"fzuw2ol"
原本傻傻的在字符串里面找"w",然后在"w"前面添加"fzu"

s = input()
print(s.replace('w2ol', 'fzuw2ol'))

4. 展示/修改货品的属性

使用类的相关知识完成,对一个货物的序号,名称,价格,总数量,剩余数量,售出收入进行封装

class Goods:def __init__(self, ordinal, name, price, total, remain):self.judge = Noneself.ordinal = ordinalself.name = nameself.price = priceself.total = totalself.remain = remainself.income = price * (total - remain)def display(self):print("商品序号:", self.ordinal)print("商品名称:", self.name)print("单价:", self.price, "元/kg")print("总数量(kg):", self.total)print("剩余数量(kg):", self.remain)def setdata(self):self.judge = int(input("是否修改商品信息(输入1表示修改,输入0表示不修改):"))if self.judge == 1:print("-------------修改中------------")self.ordinal = input("修改商品序号为:")self.name = input("修改商品名称为:")self.price = float((input("修改单价为(元/kg):")))self.total = float(input("修改商品总数量(kg):"))self.remain = float(input("修改商品剩余量为(kg):"))self.income = self.price * (self.total - self.remain)print("------------修改后商品数据为:------------")self.display()print("已售出商品价值:", self.income, "元\n")if __name__ == '__main__':g1 = Goods(1, "苹果", 20, 100, 15)g1.display()print("已售出商品价值:", g1.income, "元\n")g1.setdata()

5. 函数装饰器

实现两个装饰器

  1. 在函数开始时打印"hello",结束时打印"bye"
  2. 打印函数运行时间
import timedef dec01(func):def wrapper():print("hello")func()print('bye')return wrapperdef dec02(func):def wrapper():t1 = time.time()func()t2 = time.time()print("using time:", (t2 - t1) * 1000, "ms")return wrapper@dec01
@dec02
def fun():print('sum:', sum(range(100000000)))if __name__ == '__main__':fun()

6. 静态属性和静态方法

静态属性和静态方法根属于这个类

  1. 静态属性
    如下代码,在每一次都能够输出这个类有多少个实例,是因为这个cnt是属于这个类,而不是实例
    就算是改变了a.cnt,MyOperation.cnt也不会改变
  2. 静态方法
    静态方法本质上跟普通的函数是一样的,但是这个方法根属于这个类。这样写的话,算是提供了更好的封 装,让我们知道,这个函数是属于这个类的
class MyOperation:cnt = 0def __init__(self):MyOperation.cnt = MyOperation.cnt + 1print(MyOperation.cnt)@staticmethoddef add(n1, n2):return n1 + n2a = MyOperation()
b = MyOperation()
c = MyOperation()
d = MyOperation()
answer = MyOperation.add(1, 5)
print(answer)

在之后的项目中,也使用到了静态方法的封装,这些方法就都是记录日志的方法
使用:Log.error()Log.warning()Log.exception()

7. 一些魔术方法的使用

__eq__ : 设置相等的比较
__getattr____setattr____delattr__:这三个就是在对对象的属性进行操作的时候,会调用这些方法,例如print(a.hh)这样使用.来调用
__getitem__
__setitem
__delitem__:这三个就是在对对象使用获取字典属性的方式时调用,例如print(a[‘hh’])这样
__call__:让实例对象可以被调用
__enter____exit__:这两个是设置上下文管理的方法,相信大家一定用过 with open('hh.txt', 'r') as f:这样的操作,那了解一下这两个魔术方法,就能知道文件的with是怎么实现的啦

有意思的脚本

1. 消息轰炸

这个就算是纯纯抄代码了XD,大概就是调用了windows的接口,从os层面发送qq消息

import win32gui
import win32con
import win32clipboard as wdef qq(message):name = "2k"w.OpenClipboard()w.EmptyClipboard()w.SetClipboardData(win32con.CF_UNICODETEXT, message)w.CloseClipboard()handle = win32gui.FindWindow(None, name)win32gui.SendMessage(handle, 770, 0, 0)win32gui.SendMessage(handle, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)for i in range(100):qq('wyx 快来上号')

2. 爬取教务处通知

害怕教务处来敲我的宿舍门,我就不展示太多信息了,具体步骤差不多就是,通过requests来访问每一页通知目录,获取每一个通知的url。在逐个访问每一篇通知。

3. 爬b站评论

这个具体步骤还是挺多的,想看具体思路的话,可以点击这里,有评论说跑不出来,我也没再去试了,但是思路应该还是可以康康的

4. 打字吧刷成绩

原本的思路是通过requests获取文章,然后使用selenium进行输入,但是发现send_key是不行的,所以就通过os层面来解决,使用pyautogui来进行输入。
感觉有点不太。。。额,不太好吧,我也只刷了一两篇文章,这里也就不把代码发到这上面了,有兴趣的童鞋可以自己琢磨一下。

5. 爬正本小说

是通过requests发送请求获得html,然后使用正则解析html获取小说

import requests
import ref = open(r'诛仙.txt', mode='a', encoding="utf-8")
for n in range(2, 256):print(n - 1)url = f'https://www.biquge7.com/book/4233/{n}.html'r = requests.get(url)r.encoding = 'utf-8'# print(r.text)obj = re.compile(r'<div id="chaptercontent" class="Readarea ReadAjax_content">(?P<content>.*?)<p class="readinline">', re.S)obj1 = re.compile(r'<h1 class="wap_none">(?P<title>.*?)</h1>')ret = obj.finditer(r.text)title = obj1.search(r.text)for i in ret:f.write(f'{n - 1}.')f.write('\n' + title.group('title') + '\n')f.write(i.group('content').replace('<br /><br />  ', '\n').strip())f.write('\n')r.close()
f.close()

6. 一些数据可视化

使用了matplotlib,让数据以图标的形式展现出来
原数据是各个高校每年的排名,希望以曲线图的方式展示出武汉大学的历年名次变化

import csv
import matplotlib.pyplot as plt
import matplotlibfont = {'family': 'SimHei', "size": 10}
matplotlib.rc('font', **font)def get_info():u = []f = open('pySchoolRank.csv', 'r', encoding='utf8')reader = csv.DictReader(f)print(reader)for line in reader:ave = (int(line['2017']) + int(line['2018']) + int(line['2019']) + int(line['2020']) + int(line['2021'])) / 5print(line['\ufeff学校名称'], int(ave))u.append({'学校名称': line['\ufeff学校名称'], '2017': line['2017'], '2018': line['2018'],'2019': line['2019'], '2020': line['2020'], '2021': line['2021']})return udef draw(info):uname = info[0]['学校名称']y = [info[0]['2017'], info[0]['2018'], info[0]['2019'], info[0]['2020'], info[0]['2021']]y = list(map(int, y))x = range(2017, 2022)plt.plot(x, y, label=f'{uname}2017--2021排名走势图')plt.gca().invert_yaxis()plt.legend()plt.show()draw(get_info())

一些项目

TODO LIST

这是一个相当相当简陋的todo清单了,丑陋的ui,杂乱的flask代码,现在看来确实不堪回首。
完成这个项目
前端:需要看一点html,css(不必须),的知识
后端:服务方面需要会一点flask,存储方面如果不会使用数据库的话可以使用文件存储。我使用的是mysql数据库,当时也只学习了简单的一些sql语句。

这里就不放上代码了,也没有分文件,总共只有一个文件,两百多行

帅团外卖

代码在https://github.com/cgynb/a-flask-project
这是一个前后端不分离的项目
前端:jquery
后端:flask, mysql
需求:
用户可以进行登录、注册、修改用户信息。(通过这个,可以大概了解登录是个啥东西,怎么来保持登录状态【cookie-session】/ 【token】)
其余的点单,点赞,收藏店铺,这些操作其实都是通过数据库的crud来实现的,当然不会使用数据库的话,自己设计格式,用文件来储存也行。。。
聊天功能的话,需要看一看websocket的知识,然后在flask中直接使用websocket的话有flask-sock,封装的比较好用的是flask-socketio,我使用的是flask-socketio


匿名聊天室(小QQ)

关于这个匿名聊天室的桌面应用我也写了好几篇文章,其实还有一篇【客户端:四 通信功能】没有写,但是代码是在没法优化,太丑了,无奈,写了文章到一半,放弃了,现在还烂在那里。但是前几篇文章还是可以看看的。
基于python实现的聊天室(客户端:一)窗口设置
基于python实现的聊天室(客户端:二)tkinter的美化ttkbootstrap的滚动文本框ScrollText自动滚动到底部
基于python实现的聊天室(客户端:三)发送表情实现
基于python实现的聊天室(服务端)

毕业生转圈圈

这个也是我们工作室的最后一轮考核了,我负责的是后端部分。
项目地址:https://github.com/cgynb/jobs
在这个项目里面,有提高代码的可读性,项目文件结构较明确。然后实现的功能也更多了,更复杂了。比如说使用了refresh-token来保持登录态,私聊有显示在线状态、消息提醒、未读消息提醒等功能。也尝试使用了mongodb。
由于整个项目太大了,也不容易讲,所以如果感兴趣的话,可以阅读下源码,然后有什么技术问题可以私信我,我会看看并且尝试解决的。

给个账号,大家可以访问看看呀。地址:http://47.112.108.202/
账号:cgy
密码:123456

再上两张图





结语

其实大一过得真的很快,对我的大一也能打个85分吧,参加了很多活动,认识了了形形色色的人。大一在工作室的考核下度过了,大二我也想加入实验室,或者做些什么来充实自己了。整个大一当然不止写了这点代码,但是这些也是我自己认为,自己在一年学习中学习到的相当重要的东西了。也是通过博客的形式,分享记录下自己的大一。

学python学了一年,都做了啥东西相关推荐

  1. 学python有前途吗-现在学Python还有前途吗?能做什么?

    现在学Python还有前途吗?能做什么?无论是从行业人才需求,国家政策支持,还是从Python本身广泛应用的优势来看,学Python都是极其有个人发展前途的.至于可以从事的工作岗位就更多了,像Linu ...

  2. 怎么学python知乎_你们都是怎么学 Python 的?

    自学确实是比较难得,没有一个好的规划,好的学习路线图,你不会知道自己下一步该怎么办. 今天我就帮你来解决,分享2020年黑马程序员Python学习路线图,包含学习路线图,学习视频,学习工具,你都可以找 ...

  3. python能开发什么产品_三周学 Python ?不,三周做个产品

    我的同事在看到毫无开发经验的我用三周时间,不但从零基础用上了 Python,还做出了一个客户关系管理系统,强烈邀请我分享经验.惶恐,因为我并没有出色的智商,也没有觉得三周学 Python 是一个体现自 ...

  4. 全民学python,现连小学生都开始内卷起来了!

    前言 最近网上流传一句话,"人生苦短,我要学python".python现在已经成为一种非常常见的语言,特别是在当今的数据科学中,由于其易于读写,它越来越受到程序员的追捧.从市场的 ...

  5. python可以从事什么工作-学Python可以找什么工作或者做什么兼职?

    Python是⼀⻔开发语⾔,掌握了这⻔语⾔,就可以使⽤它实现各种各样的需求.学习完Python以 后,我们⼤致可以从事以下⼏个⽅向: 1. 数据分析: 2. web应⽤开发:越来越多的企业在做服务器开 ...

  6. 学python可以从事什么工作-学Python可以找什么工作或者做什么兼职?

    Python是⼀⻔开发语⾔,掌握了这⻔语⾔,就可以使⽤它实现各种各样的需求.学习完Python以 后,我们⼤致可以从事以下⼏个⽅向: 1. 数据分析: 2. web应⽤开发:越来越多的企业在做服务器开 ...

  7. python怎么学比较有技巧_怎么学python学的快?学习技巧大分享

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

  8. 自学python哪个网课好,网课学python学的好吗

    Python可以自学吗?有哪些不错的网课? 可以自学的,需要依据每个人的情况来决定,想要自学python对各方面有一定要求的,比如说基础好.自学能力强.理解能力强,这种情况是可以选择自学python的 ...

  9. 如何学好Python?相信很多人都做错了!

    Python入门从哪开始,以我的过往经验,发现很多的教程都是这样讲的: 先介绍 Python 的基本语法规则.list.dict.tuple 等数据结构,然后再介绍字符串处理和正则表达式,介绍文件等I ...

  10. 老师学python可以干嘛-你都用 Python 来做什么?

    Pyhton可以用来做金融量化投资分析.Python金融量化 探讨问题与分析思路 本文以Python为量化工具,主要探讨以下三个问题: (1)指数定投的优势与劣势在哪? (2)指数定投受哪些因素影响, ...

最新文章

  1. Vim YouCompleteMe 安装配置
  2. Tensorflow中placeholder传入值与feed_dict喂食器的联系与用法
  3. delphi 中配置文件的使用(*.ini)
  4. SAP Spartacus 的 cx-page-layout selector 介绍 - PageLayoutComponent
  5. linux下安装配置redis服务
  6. How to use QueryPerformanceCounter? (c++,不使用 .Net)
  7. SaaS窘境[欣赏然后翻译之]
  8. 【CodeForces - 670D1 】Magic Powder - 1 (模拟 或 枚举 或二分优化)
  9. 9型转x型 cobol_兰州一餐馆推鸳鸯牛肉面 9种面型一面多吃
  10. 训练日志 2019.1.2
  11. 如何用matlab画正态分布曲线
  12. 在Ubuntu下安装qq
  13. 走进软件测试面试(真题分析)
  14. Mysql查询语句使用select.. for update导致的数据库死锁分析
  15. Python 中除法运算需要注意的几点
  16. linux zmq编译pgm,czmq交叉编译
  17. 3dmax 模型到unity3d注意问题
  18. windows-由于系统的默认编码不一致导致解压后的文件名显示乱码
  19. 趋势杀毒软件卸载方法(卸载密码破解)
  20. TPS和QPS的区别和理解

热门文章

  1. 斯特林——安菲尔德的新宠
  2. 2022 (第五届)GIS软件技术大会开幕,GIS、IT将加速融合
  3. 双向链表双向循环链表基础知识
  4. ゞAndroid - 毞記 - xxxxxxxxxゞ
  5. BUG调试:maven install报错:程序包xxx不存在
  6. 【控制control】四足机器人动力学模型-SLIP
  7. CentOS6.5下安装远程桌面服务端软件VNC Server
  8. 【算法大杂烩】常见算法的归类和总结——消息摘要算法
  9. 海思Hi3521DV200移植opencv3.3
  10. 中标麒麟MIPS系统使用iperf