一、使用pip
第三方库集合了全世界Python程序员的智慧,可以说是无穷无尽。在遇到一个需求场景,通过上网搜索等方式确定要使用哪个第三方库之后,可以使用pip来安装第三方库。
由于第三方库是各地的程序员写的,为了让第三方库的下载使用更加方便,Python官方提供了一个网站pypi将所有的第三方库收集起来,又提供了一个pip工具,使用pip就可以直接从pypi上下载想要的第三方库了,就如同我们可以在手机的“应用商店”里下载所有想要的第三方应用一样。
安装Python的时候,pip已经自动安装好了,可以直接使用。
pip是一个命令行程序。我们可以在Pycharm页面的左边看到“终端”
或者按下开始 + R键,在框中输入cmd打开控制台。


如果敲下pip,看到一大堆帮助选项,说明pip可以直接使用了。

如果没有显示这些帮助选项,而是显示“pip既不是内部或外部命令,也不是可运行程序”,说明当初安装Python的时候没有选择“Add Python ... to PATH”,此时可以重新安装Python或者手动把pip所在的目录添加到PATH这个环境变量里(网上搜一下如何添加)。手动操作完了之后要重启一下。
接下来,使用pip install [库名]就可以完成第三方库安装了。这个命令需要从网络上进行下载,使用时要保证网络畅通。
安装成功后,就可以使用import导入相关模块,进行使用了。
如果使用pip安装完第三方库之后再Pycharm中仍然提示找不到对应模块,检查设置->项目->Python解释器,看看当前Python解释器设置的是否正确(如果一台电脑安装了多个版本的Python,可能出现这种情况,可能把第三方库安装到别的Python版本下面去了,此时重新设置解释器即可)。
二、二维码生成工具
接下来我们使用第三方库完成一段生成二维码的代码。
二维码本质上就是一段字符串,我们可以把任意字符串制作成一个二维码图片。生活中使用的二维码,更多的是一个URL(网址)。
网上搜索可知要用到qrcode这个库。我们上pypi官网查一查这个库的相关信息。

我们把文档中的这句命令复制到Pycharm终端进行执行,就可以安装这个库了。

具体的用法还是参考文档:

我们仿照这个示例写一段代码,就可以把想要的信息变成二维码了。
import qrcode
s = 'https://blog.csdn.net/dev_jin?spm=1011.2266.3001.5343'
img = qrcode.make(s)
type(img)
img.save('qrcode.png')

三、操作excel
首先我在‘d:\PythonProject’路径下准备好一个xlsx文件。

读取excel可以使用xlrd模块。我们使用pip来安装一下。

接下来写个代码读取表格中的内容。
import xlrd
# 打开 xlsx 文件
xlsx = xlrd.open_workbook('d:\\PythonProject\\test.xlsx')
# 获取到指定的标签页
table = xlsx.sheet_by_index(0)
# 获取表格中有多少行,保存下来,方便一会儿设置循环次数
nrows = table.nrows
print(f'nrows = {nrows}')

这里的nrows表示下标,是从0开始的。接下来我们就可以进行循环统计操作。
我们先用一个for循环把表格中记录的所有同学的姓名、班级、学号都打印出来看看。
import xlrd
# 打开 xlsx 文件
xlsx = xlrd.open_workbook('d:\\PythonProject\\test.xlsx')
# 获取到指定的标签页
table = xlsx.sheet_by_index(0)
# 获取表格中有多少行,保存下来,方便一会儿设置循环次数
nrows = table.nrows
# 进行循环操作
for i in range(1, nrows):
# 拿到当前同学的姓名
print(table.cell_value(i, 0))
# 拿到当前同学的班级
print(table.cell_value(i, 1))
# 拿到当前同学的分数
print(table.cell_value(i, 2))
print('--------------------------')

可以看到表格中姓名、班级、成绩的信息都成功打印出来了。
现在假设我们要计算1班同学的平均成绩。我们只需在循环中加上一个条件判断,判断该同学为1班同学时,把ta纳入平均值计算。
import xlrd
# 打开 xlsx 文件
xlsx = xlrd.open_workbook('d:\\PythonProject\\test.xlsx')
# 获取到指定的标签页
table = xlsx.sheet_by_index(0)
# 获取表格中有多少行,保存下来,方便一会儿设置循环次数
nrows = table.nrows
# 进行循环操作
total = 0
count = 0
for i in range(1, nrows):
classId = table.cell_value(i, 1)
if classId == 1:
total += table.cell_value(i, 2)
count += 1
print(f'平均分:{total / count}')
四、鼓励师
接下来我们编写一个程序,让电脑每隔一段时间发出声音来鼓励我们一下,以提高工作的积极性。要实现这个功能,我们要用到playsound第三方库用来让电脑播放声音。为了达到鼓励效果,可以让程序监听键盘按键,比如连续按键N次,就播放一个音频,而且让每次播放的音频不同。这可以用pynput第三方库来实现。
我们先用pip来安装这两个第三方库。

我们用稍微旧一点的版本,因为最新的版本可能有问题。
然后,我从网上下载三个鼓励音效,打开pycharm,把这些音频文件拷贝到项目中。

像这些文件,我们称之为程序的资源文件。
接下来我们创建一个Listener对象,将它赋给listener。创建这个变量之后,用户按键盘的动作就会被捕获到。接着我们来写一个回调函数,在用户按下按键时调用。
from pynput import keyboard
def onRelease(key):
"""
:param key: 用户按下了哪个键
这个函数不是我们自己主动调用,而是把这个函数交给了Listener,
由Listener 在用户释放按键的时候自动调用。
这样的函数叫做回调函数(callback function)
"""
print(key)
# 创建 Listener 之后,用户的键盘按键动作就会被捕获到
# 我们还希望在补货到之后能够执行一段代码
listener = keyboard.Listener(on_release=onRelease)
listener.start()
listener.join()
把这个程序运行起来,接下来我们每按一个键就会在输出中看到按下的内容。

接下来我们就可以写出完整的代码了。我们让用户每按下十次键盘就听到一段鼓励音频,并利用随机数让用户可以听到不同的音频。
from pynput import keyboard
from playsound import playsound
import random
soundlist = ['sound\\1.mp3','sound\\2.mp3','sound\\3.mp3']
count = 0
def onRelease(key):
"""
:param key: 用户按下了哪个键
这个函数不是我们自己主动调用,而是把这个函数交给了Listener,
由Listener 在用户释放按键的时候自动调用。
这样的函数叫做回调函数(callback function)
"""
global count
count += 1
if count % 10 == 0:
# 播放音频!
i = random.randint(0,len(soundlist)-1)
playsound(soundlist[i])
# 创建 Listener 之后,用户的键盘按键动作就会被捕获到
# 我们还希望在捕获到之后能够执行一段代码
listener = keyboard.Listener(on_release=onRelease)
listener.start()
listener.join()
不过,此处的播放音频消耗时间比较多,可能会引起输入卡顿。对此,我们可以创建一个线程,在线程里面播放音频。
优化后的代码是这样的:
from pynput import keyboard
from playsound import playsound
import random
from threading import Thread
soundlist = ['sound\\1.mp3','sound\\2.mp3','sound\\3.mp3']
count = 0
def onRelease(key):
"""
:param key: 用户按下了哪个键
这个函数不是我们自己主动调用,而是把这个函数交给了Listener,
由Listener 在用户释放按键的时候自动调用。
这样的函数叫做回调函数(callback function)
"""
global count
count += 1
print(key)
if count % 10 == 0:
# 播放音频!
i = random.randint(0,len(soundlist)-1)
#playsound(soundlist[i])
t = Thread(target=playsound, args=(soundlist[i],))
t.start()
# 创建 Listener 之后,用户的键盘按键动作就会被捕获到
# 我们还希望在捕获到之后能够执行一段代码
listener = keyboard.Listener(on_release=onRelease)
listener.start()
listener.join()
现在再运行一下程序,流畅多了。
END
1万+

被折叠的 条评论
为什么被折叠?



