库
使用的库的来源:
- 标准库:Python自带的库,只要安装了Python就可以直接使用。
- 第三方库:其他人实现的库,要想使用,需要额外安装。
标准库:
在Python官网上可以看到标准库的内容。网页连接如下:
https://docs.python.org/3.10/library/index.html
日期计算
输入任意的两个日期,计算两个日期之间隔了多少天。
代码思路:使用import语句导入标准库的datetime模块;使用datetime.datetime构造两个日期,参数使用 年,月,日 这样的格式;两个日期对象相减,即可得到日期的差值。偷摸秀一下,运行结果时我跟我的心上人在一起的日子,虽然没有很久,但未来可期吧。
#写法1
from datetime import datetime
date1 = datetime(year=2022,month=11,day=2)
date2 = datetime(year=2023,month=3,day=28)
print(date2-date1)
#写法2
import datetime
date1 = datetime.datetime(year=2022,month=11,day=2)
date2 = datetime.datetime(year=2023,month=3,day=28)
print(date2-date1)
#写法3
import datetime as dt
date1 = dt.datetime(2022,11,2)
date2 = dt.datetime(2023,3,28)
print(date2 - date1)
在此我碰到一个错误,报错为TypeError: 'module' object is not callable,,因为文件名或项目名和datetime 关键字重复了,只需要修改就好,可以按快捷键shift+F6,或者找到重命名就可以解决。
单词逆序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,为简单起见,标点符号和普通字母一样处理。例如“ I am a student.”则输出“student. a am I”。
代码思路:使用str的split方法进行字符串切分,指定空格为切分符,返回结果是一个列表;使用列表的reserve方法进行逆序;使用str的join方法进行字符串拼接,把列表中的内容进行合并。
def reverseword(s: str):
tokens = s.split(' ')
tokens.reverse()
return ' '.join(tokens)
print(reverseword('I am a student.'))
旋转字符串
给定两个字符串,s和goal,如果在若干次旋转操作之后,s都能变成goal,那么返回True,s的旋转操作就是将s最左边的字符串移动到最右边。例如,若s = 'abcde',在旋转一次之后的结果就是'bcdea'
代码思路:使用len求字符串长度,如果长度不相同则一定不能旋转得到;将s和自己进行拼接,然后直接使用in方法来判定goal是否是s+s的子串。
def roatateString(s,goal):
return len(s) == len(goal) and goal in s+s
print(roatateString('abcde','cdeab'))
统计是给定字符串前缀的字符串数目
给你一个字符串数组 words 和一个字符串 s ,其中 words[ i ]和s只能包含小写英文字母,请返回words中是字符串s前缀的字符串数目。一个字符串的前缀是出现在字符串开头的子字符串,子字符串中的连续一段字符序列。
代码思路:依次遍历words中的字符串;之间使用字符串的start switch方法即可判定当前字符串是否是s的前缀。
文件查找工具
指定一个待搜索路径,同时指定一个待搜索关键字,在待搜索路径中查找是否文件名中包含这个关键字。
代码思路:使用os.walk 即可实现目录的递归遍历;os.walk返回一个三元组,分别是 当前路径,当前路径下包含的目录名(多个),当前路径下包含的文件名(多个)
import os
inputPath = input("请输入待搜索路径:")
pattern = input("请输入待搜索关键词:")
for dirpath,dirname,filenames in os.walk(inputPath):
for f in filenames:
if pattern in f:
print(f'{dirpath}/{f}')
pip的使用
pip相当于python世界中的应用商店,用pypi网站把各种第三方库收集起来,使用工具pip可以直接从pypi上下载所需要的第三方库。通常在安装pycharm时会已经安装好了pip直接使用即可。
先点击下方的
然后输入pip回车,出现以下命令行则说明安装正确
使用pip时用以下命令即可安装第三方库,注意该命令需要从网络上下载,使用时要保证网络通畅。安装成功后,即可使用import命令导入相关模块,即可进行使用。
pip install [库名]
注意:如果使用pip安装完成第三方库之后,在pycharm中仍然提示找不到对应的模块,则检查Setings->project->python interpreter,看当前python解释器设置的是否正确(如果一个机器上安装了多个python,容易出现这种情况)。
使用python生成一个二维码
二维码本质上就是一段字符串,可以把任意字符串制作成一个二维码图片,生活中使用的二维码更多的是一个URL(网址)使用第三方库qrcode。
使用浏览器Search results · PyPI,在搜索框搜索qrcode
使用
在界面中找到语句并复制下图选中部分到pycharm命令行,敲击回车就开始下载第三方库了,在此过程中请保持网络畅通,会显示下载进度条。出现下方红色框选部分则表示下载成功。
若存在如下警告,可以忽视,该警告表示所用版本较低,是否更新,不更新也可正常使用。
参考官方文档所给的代码示例编写代码
import qrcode
img = qrcode.make("今天天气真不错")
img.save('qrcode.png')#保存文档
运行结果,控制台不会显示,但在导航栏会出现一个新的.png文档,打开后就是所生成的二维码,可以用手机扫码就会显示文字结果。
操作excel
读取excel可以使用xlrd模块;修改excel可以使用xlmt模块。
以xlrd为例
1、安装xlrd,注意别的版本不适应操作.xlsx文件。
pip install xlrd==1.2.0
2、编写代码:计算班级为100的同学分数的平均值。
import xlrd
#1、打开文件
xlsx = xlrd.open_workbook('D:\代码学习\python学习\python\daimashili\test.xlsx')
#2、获取指定的标签页
table = xlsx.sheet_by_index(0)
#3、获取到表格中有多少行
nrows = table.nrows
print(f'nrows = {nrows}')
for i in range(1,nrows):
#拿到当前同学的班级 id
print(table.cell_value(i,0))
#4、进行循环统计操作
total = 0
count = 0
for i in range(1,nrows):
classId = table.cell_value(i,1)
if classId == 100:
table += table.cell_value(i,2)
count += 1
程序员鼓励器
在敲代码的过程中,每个一段时间,让电脑发出声音来鼓励一下。需要实现两个操作:①、播放声音,需要使用python中的playsound第三方库的1.2.2版本。②、监听键盘按键,比如连续按键n次,播放一个音频,并且让每次播放的音频还不一样,使用第三方库 pynput 的1.6.8版本。
pip install pynput==1.6.8
pip install playsound==1.2.2
安装好第三方库后,准备几个音频文件,复制到项目目录下,然后编写代码。
import random
from pynput import keyboard
from playsound import playsound
soundList = ['sound/1.mp3','sound/2.mp3','sound/3.mp3']
#记录当前用户按了多少次键盘
count = 0
def onRelease(key):
"""
这个函数就是在用户释放键盘按键的时候,就会被调用到。
这个函数不是咱们自己主动调用的,而是把这个函数交给了Listener
由Listener在用户释放按键的时候自动调用
:param key:用户按下了哪个键
:return:
"""
print(key)
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()