python编程课第七课_第7课:基本技能和应用,全民,一起,玩,Python,第七课,技巧,与,上...

大小写转换

def chnum(x):

str_num=str(x)

result=''

d={1:'壹',2:'贰',3:'叁',4:'肆',5:'伍',

6:'陆',7:'柒',8:'捌',9:'玖',0:'零'}

for s in str_num:

result=result+d[int(s)]

#查找的时候按照数字来找的键

#所以要进行一次数据类型转换

return result

a=int(input('请输入要转换的数字'))

b=chnum(a)

print(b)

为了简化,可以在import后面加上as和简称

import 大小写转换2 as num

a=int(input('请输入要转换的数字'))

b=num.chnum(a)

print(b)

链式调用

当每个环节的函数都必须能返回一个对象;且该对象必须支持下一步需要调用的方法。

>>> a=[3,5,2,1]

>>> a.sort().reverse()

但是这上面sort后面并不能返回对象,所以语句错误

>>> a=[3,5,2,1]

>>> a.sort(reverse=True)

>>> a

[5, 3, 2, 1]

利用reverse这一属性,一步到位

例如

s = ' ab c de '

n = s.upper()

m = n.strip()

s = m.replace('C','x')

t = s.split()

t.reverse()

print(t)

合并为

s = ' ab c de '

t = s.upper().strip().replace('C','x').split()

t.reverse()

print(t)

合并字符串

name='jindaohei'

age=29

s=f'我是{name},{age}岁,我很{{菜}}'

#f语句用来合并句子,两个花括号用来转义

print(s)

交换数据

>>> a=3

>>> b=4

>>> c=5

>>> d=1

>>> a,b,c,d=d,a,b,c

>#对应位置交换

>>> a

1

>>> b

3

>>> c

4

>>> d

5

题目一

请编写一个“倒排正整数”的函数。该函数接收一个正整数作为参数,并能返回该整数的倒置形式。

比如,假设该函数名为 reverse_num(),那么执行 print(reverse_num(7382)) 后,会显示一个数字:2837 。

注意:返回值必须也是一个整数,而不是 ‘2837’ 这样的字符串。

def reverse_num(x):

s=list(str(x))

s.reverse()

t=''.join(s)

return int(t)

import 倒排正整数 as m

b=input('请输入要倒排的数字')

d=m.reverse_num(b)

print(d)

调取最新股票数据

先加载

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tushare

#通过清华镜像高效得多

>>> import tushare as ts

>>> print(ts.get_today_all())

调用Excel

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlwings

>>> import xlwings

>>> xlwings.App()

#App一定要这样写,大小写敏感的,启动一个Excel

Books属性

>>> import xlwings as xw

>>> app1=xw.App()

>>> app1.books.add()

#新建一个book,得到两个Excel文件

app1.books.open('G:/网课/杨洋VBA/全民一起VBA实战篇(Excel数据分析)/14-19年学生成绩.xlsm')

#打开程序

>>> wb=app1.books.open('G:/网课/杨洋VBA/全民一起VBA实战篇(Excel数据分析)/14-19年学生成绩.xlsm')

>>> wb.save('D:/test.xlsm')

#另存为新的文件

批量添加工作簿

for i in range(10):

wb.sheets.add()

修改工作簿名字

>>> ws=wb.sheets.add()

>>> ws.name="jindaohei"

清空数据

>>> ws.clear()

找到指定名称的工作簿

ws=wb.sheets['锦到黑']

找到对应range对象

>>> r=ws.range('A1:E2')

>>> r.value=123.

>>> print(r.value)

[[123.0, 123.0, 123.0, 123.0, 123.0], [123.0, 123.0, 123.0, 123.0, 123.0]]

#读出的就是列表

给range赋值

>>> x=ws.range('F3')

#定义x为一个range

>>> x.value=r.value

#将r赋值给x,r为二维列表,即以F3为左上角赋值

把股票数据写入Excel里面

import tushare as ts

import xlwings as xw

#引入模块

x=ts.get_today_all()

#从网络上读取数据

app=xw.App()

#建立Excel文件

wb=app.books.add()

#建立工作表

ws=wb.sheets[0]

#指定工作簿

ws.range('B2').value=x

wb.save('D:/股票数据.xlsx')

wb.close()

app.quit()

#赋值保存关闭退出

调用VBA宏

import xlwings as xw

app=xw.App()

wb=app.books.open('G:/地图填色.xlsm')

m=app.macro('full_color')

#把宏赋值给m

m.run()

#运行VBA宏

app.quie()

简单操作

import xlwings as xw

app = xw.App()

wb = app.books.open('d:/test.xlsx')

ws = wb.sheets['工资单']

x = ws.range('C4:C10').value

ws.range('D12').value = sum(x)/len(x)

x = ws.range('D4:D10').value

ws.range('D13').value = sum(x)/len(x)'

wb.save()

app.quit()

题目

首先请自己编写本节视频课程的演示案例,通过tushare模块取得股票数据并写入一个Excel工作簿。

接下来,请再编写一个程序,从该工作簿中找出代码为603977、603939、300322、300257、300008或其他股票的数据,并将这几行数据保存到另一个Excel工作簿中。

示例代码:(假设全部股票数据在stocks.xlsx中)

import xlwings as xw

stock_codes = [603977,603939,300322,300257,300008]

result = []

app = xw.App()

wb = app.books.open('d:/demo/stocks.xlsx')

all_stocks = wb.sheets[0].range('A2:P3702').value

#判断是否存在,用s遍历数据,判断是否存在于列表中

for s in all_stocks:

if s[1] in stock_codes:

result.append(s)

wb2 = app.books.add()

wb2.sheets[0].range('A1').value = result

wb2.save('d:/demo/result.xlsx')

app.quit()

文件处理技巧

获取一个文件夹下所有文件的名字

>>> import os

>>> x=os.listdir('E:\杂七杂八的文件\TEST')

>>> print(x)

['2013.7班学生档案.xls', '2015级体测公示.xlsx', '2020电磁场毕业设计导师通讯录.xlsx']

读取一个文件夹下的Excel文件数据

import xlwings as xw

import os

app=xw.App()

r='E:/杂七杂八的文件/TEST'

x=os.listdir(r)

for i in x:

if i[-5:].lower()=='.xlsx' or i[-4:].lower()=='.xls':

#用来判断是否是Excel文件

wb=app.books.open(r+'/'+ i)

ws=wb.sheets[0]

print(ws.range('c2').value,ws.range('c6').value)

wb.close()

app.quit()

但listdir读不了子文件的内容

就要用os.walk

import os

for i in os.walk('E:\学习\大四上\多媒体技术'):

print(i)

('E:\\学习\\大四上\\多媒体技术', ['专业英语大作业'], ['多媒体1.pdf', '多媒体3.pdf', '多媒体4.pdf', '多媒体5.pdf', '多媒体6.pdf', '多媒体7.pdf', '多媒体8-9.pdf', '多媒体作业.psd', '多媒体作业2.psd', '多媒体技术.doc', '多媒体技术.docx', '多媒体技术题目.docx'])

('E:\\学习\\大四上\\多媒体技术\\专业英语大作业', ['专业英语大作业', '第2组 学号最后两位除以三余数为1', '第3组 学号最后两位除以三余数为2'], ['6页.pdf', '6页_1_6_translate.pdf', '9页.pdf', '9页_1_9_translate.pdf', '9页翻译.docx', '说明.txt'])

('E:\\学习\\大四上\\多媒体技术\\专业英语大作业\\专业英语大作业', ['第1组 学号最后两位除以三余数为0'], [])

('E:\\学习\\大四上\\多媒体技术\\专业英语大作业\\专业英语大作业\\第1组 学号最后两位除以三余数为0', [], [])

('E:\\学习\\大四上\\多媒体技术\\专业英语大作业\\第2组 学号最后两位除以三余数为1', [], ['10页.pdf', '9页.pdf'])

('E:\\学习\\大四上\\多媒体技术\\专业英语大作业\\第3组 学号最后两位除以三余数为2', [], ['16页.pdf'])

可以得到一个元组,第零为目录名,第二位文件名

import os

for i in os.walk('E:\学习\大四上\多媒体技术'):

r=i[0]

f=i[2]

for s in f:

print(r+'/'+s)

import os

for r,d,f in os.walk('E:\学习\大四上\多媒体技术'):

#也可以这样写,进行对应位置的解包

for s in f:

print(r+'/'+s)

两者结合一下

通过os.walk遍历

import os

import xlwings as xw

app=xw.App()

for i in os.walk('E:/学习'):

r=i[0]

# 第零个存的是目录名

f=i[2]

# 第二个存的是文件名

for s in f:

if s[-5:].lower()=='.xlsx':

wb=app.books.open(r+'/'+s)

ws=wb.sheets[0]

print(ws.range('c2').value)

wb.close()

app.quit()

给文件重命名

首先要安装一个pinyin模块

pip install -i https://pypi.doubanio.com/simple jieba

但是由于我重装了系统,虽然pip装的库都在,但是查看pip list会报错

fatal error

于是可以选择重新装一下pip

python -m pip install --upgrade pip

#这里upgrade前面是- - 两个,我开始搞错了一直没成功

将汉字转为拼音

>>> import pinyin

>>> s=pinyin.get('你好呀')

>>> print(s)

nǐhǎoyā

可以设置可选参数,不要加上音调

>>> s=pinyin.get('你好呀',format='strip')

>>> print(s)

nihaoya

import os

import pinyin

for r,d,f in os.walk('E:\学习\大四上\多媒体技术'):

for s in f:

new_name=pinyin.get(s,format='strip')

os.rename(r+'/'+s,r+'/'+new_name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值