目录
10.1 用print() 输入多个信息逗号,分隔的方法,虽然比较山寨但是也有用,就是比较繁琐
相比VBA的debug.print 语句,python对应的是print()函数
但是python的print()函数,强大得多,也方便得多
1 print()函数的基本语法
1.1 print() 首先是个函数
python3.0 基本都是函数用法,很少有VBA哪样的命令语句了吧?我印象里很少
1.2 print() 函数的语法
以下是 print() 函数的语法:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
参数
- objects – 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
- sep – 用来间隔多个对象,默认值是一个空格(,分隔的)。
- end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
- file – 要写入的文件对象。
- flush – 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
1.3 print() 函数的参数---简要说明
可打印什么?
- 可打印对象:几乎是所有python对象都可以直接打印
- objects ,可以是1个或者多个对象时,需要用 , 分隔,打印处理逗号,打印结果里,内容之间分割默认显示为一个空格""
分隔符
- sep – 用来间隔多个对象,默认值是一个空格,可修改。
- 都是分隔多个对象的逗号,对应的符号,默认是1个空格,可修改
句尾符
- end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
要直接写入的文件对象
- file – 要写入的文件对象,需要是py可以处理的文件对象即可。
是否强制刷新:
- flush – 输出是否被缓存通常决定于 file,True流会被强制刷新,表现为每次输出都会刷新一次。
2 print() 可直接打印的各种对象
可打印对象:几乎是所有python对象都可以直接打印,比VBA方便很多
- 可以直接打印内容
- 数字,int
- 字符串 string
- 变量等,var
- 还可以直接打印(不需要像VBA那样先写遍历,而可以整体打印数组内容!)
- 数组 list
- 元组 tuple
- 字典 dictionary
print("runoob") # 输出字符串
print(100) # 输出数字
str = 'runoob'
print(str) # 输出变量
L = [1,2,'a'] # 列表
print(L)
t = (1,2,'a') # 元组
print(t)
d = {'a':1, 'b':2} # 字典
print(d)
3 测试打印多个内容
- 打印多个内容,都需要逗号,分隔
- 但是print() 多个字符串比较特别,可以直接多个字符串 print("" "") 这样打印
#用print打印数字
#记住1,print()是个函数,python不是VBA,很少有语句,基本都是函数
#记住2,print()多个内容用逗号,分隔print(1)
print(123)
print(1,2,3)
print(3+5)
print(3-5)
print(3*5)#逆天的脑洞想到的输出格式。。。有的可以,有的不行
#print(1 2 3) #错误,这是数字还是字符串?都不是
print(1,"",2,"",3) #这样的数组还有救吗?maybe
print("1 2 3") #把数字转成字符串?就为了好看?
print(1&2&3) #错误,VBA里&是用来连接字符串的-debug.print
print(1&1) #但python里print用 &是逻辑关系与就是and或,按二进制位与,或者是集合交集#用print打印字符串
print("Hello World")#字符串输出可以用加法和乘法
print("Hello"+"World")
print("Hello World"*3)#多段字符串输出用,逗号, 或者直接多个""
print("Hello""World""你好") #直接多个""这也可以?确实可以
print("Hello" "World" "你好")
print("Hello","World")
4 调整多个内容的分隔符
- print() 打印多个内容,默认的分隔符号是逗号, 而逗号在打印结果里默认表现就是1个空格 " "
- 可以修改
# 多个内容用逗号分隔,但是设置不同间隔符,虽然默认是 ,=一个空格" "
print("www","baidu","com",sep=".")
print("3","1001","10",sep="|")
print("a","b","c",sep=",")
5 调整打印结尾的符号
- print() 默认结尾是换行符 "/n",但是也可以修改
# 结尾符号也可以自定义
print("床前明月光")
print("疑似地上霜")print("床前明月光",end="/")
print("疑似地上霜",end="/")
6 直接输出到文件?这也可以!
有几种方法
- 标准方法: file.write()
- 直接用 : print(内容,file=file)
6.1 标准方法:使用 file.write()
- 常规方法
- 先打开文件,使用 w, a等模式
- file.write() 等写入内容
- 注意 file.write()本身的语法,只能1个参数
#多种写法,还可以write?平替?
with open(path1,"a") as file4:
file4.write("床前明月光,疑似地上霜") #只能1个参数
6.2 使用print() 直接输入到文件
- print() 相比 file.writ() 的优势是什么?
- 我感觉可能是 print() 可以控制格式?比如使用 print(*,sep="",end="",file=file) 控制写入文件的格式
file3=open(path1,"a")
print("床前明月光","疑似地上霜",file=file3)
file3.close#多种写法,也可以用with
with open(path1,"a") as file2:
print("床前明月光","疑似地上霜",file=file2)
6.3 打开文件注意关闭文件句柄,防止文件始终被占用锁住!
- 如果我们用open函数打开函数给了f,这里的f是文件句柄,一定要再close文件。否则就会造成文件句柄泄露
- 或者就使用 with 打开文件的方法,不用特别去 close 文件
7 上述内容整体测试代码
前面内容整体测试的代码
#用print打印数字
print(1)
print(123)
print(1,2,3)
print(3+5)
print(3-5)
print(3*5)
#逆天的脑洞想到的输出格式。。。有的可以,有的不行
#print(1 2 3) #错误,这是数字还是字符串?都不是
print(1,"",2,"",3) #这样的数组还有救吗?maybe
print("1 2 3") #把数字转成字符串?就为了好看?
print(1&2&3) #错误,VBA里&是用来连接字符串的-debug.print
print(1&1) #但python里print用 &是逻辑关系与就是and或,按二进制位与,或者是集合交集
#用print打印字符串
print("Hello World")
#字符串输出可以用加法和乘法
print("Hello"+"World")
print("Hello World"*3)
#多段字符串输出用,逗号, 或者直接多个""
print("Hello""World""你好") #直接多个""这也可以?确实可以
print("Hello" "World" "你好")
print("Hello","World")
#用print打印变量
a = 1
b = 'OK'
print(a,b)
# 多个内容用逗号分隔,但是设置不同间隔符,虽然默认是 ,=一个空格" "
print("www","baidu","com",sep=".")
print("3","1001","10",sep="|")
print("a","b","c",sep=",")
# 结尾符号也可以自定义
print("床前明月光")
print("疑似地上霜")
print("床前明月光",end="/")
print("疑似地上霜",end="/")
#print()直接输出到文件
path1=r"C:\Users\Administrator\Desktop\t2.txt"
#print("床前明月光","疑似地上霜",file=path1) #错误,print()只能直接处理文件对象,而不是文件路径
#理论上应该好使,但是却不好使,奇怪?写成file1就不行,file3就行?
file3=open(path1,"a")
print("床前明月光","疑似地上霜",file=file3)
file3.close
#多种写法,可以用with
with open(path1,"a") as file2:
print("床前明月光","疑似地上霜",file=file2)
#多种写法,还可以write?平替?
with open(path1,"a") as file4:
file4.write("床前明月光,疑似地上霜") #只能1个参数
8 关于flush=true 缓存等
- 输出是否被缓存通常决定于 file,经常表现为几个几个的刷新,节奏不规律
- 但如果 flush 关键字参数为 True,流会被强制刷新。
如下例子(有问题,执行效果不好)
import time
import os
print("---RUNOOB EXAMPLE : Loading 效果---")
print("Loading",end = "")
for i in range(10):
os.system('cls')
for j in range(3):
print(".",end = '',flush = True)
time.sleep(0.5)
9 print()与格式化字符
9.1 常用的通配符,特别注意 %%
- %s 格式化字符串
- %d 格式化整数
- %f 格式化浮点数字,可指定小数点后的精度
- %e 用科学计数法格式化浮点数
- %E 作用同%e,用科学计数法格式化浮点数
- %c 格式化字符及其ASCII码
- %u 格式化无符号整型
- %o 格式化无符号八进制数
- %x 格式化无符号十六进制数
- %X 格式化无符号十六进制数(大写)
- %p 用十六进制数格式化变量的地址
- %g %f和%e的简写
- %G %f 和 %E 的简写
- %% '输出一个单一的'%'
9.2 注意,原始字符串 r
- 在python里,原始字符串 r表示 rawdata的意思
10 print() 里带1个或多个变量怎么输出?
试验了4种输出带变量的方法,都好用
- print(,,)
- print(%s%d)
- print({0}{1})
- print(f"")
print("{0}这个表有{1}行{2}列".format(sh1.name,rows,columns))
print(sh1.name,"这个表有",rows,"行",columns,"列")
print(f"{sh1.name}这个表有{rows}行{columns}列")
print("%s这个表有%d行%d列" %(sh1,rows,columns))
10.1 用print() 输入多个信息逗号,分隔的方法,虽然比较山寨但是也有用,就是比较繁琐
- print(sh1.name,"这个表有",rows,"行",columns,"列",sep="")
- 用逗号 ,把字符串,数字,变量分隔,拼凑成一句话,但是需要把sep设置为""不空格,否则默认为 " " 显示结果比较丑
10.2 print("%s%d" %{var1,var2}) 格式
- print("%s这个表有%d行%d列" %(sh1,rows,columns))
- s% 字符串
- d% 数字
10.3 或print("{0}{1}".format(var1,var2)) 格式
- print("{0}这个表有{1}行{2}列".format(sh1.name,rows,columns))
10.4 print(f"{var1}{var2}") 里直接包含变量var的格式
- f也是format,这是一种比较新也是比较简便的格式
- print(f"{sh1.name}这个表有{rows}行{columns}列")
import xlrd
print(xlrd.__version__)
##创建wb对象,打开对应的wb表对象
wb=xlrd.open_workbook(r'C:\Users\Administrator\Desktop\2001.xls')
#获取wb对象下的,sheet对象,且是个对象数组
sheets=wb.sheets()
print(sheets)
print(len(sheets))
print(sheets.count) #错误sheets.count <built-in method count of list object at 0x00000205AD7AE5C0>
#也可以直接去获取wb对象下的sheets对象的名字数组,这不是对象数组,而是字符串数组
sheetnames=wb.sheet_names()
print(sheetnames)
#直接获取sheet对象的.属性呢?可以么?可以,但只能是 sheet.name 没有 sheets.name
sheets=wb.sheets()
for sh in sheets:
print(sh.name)
print()
##获取某个具体的sheet
#取wb得sheet对象数组里得某一个
sh1=wb.sheets()[0]
#根据sheet的次序去取
sh2=wb.sheet_by_index(1)
#根据具体的sheet显示名去取(EXCEL里sheet的显示名不同于程序内部的真实name或者index)
sh3=wb.sheet_by_name("sheet101")
#sh4=wb.sheet_by_name("sheet1001") #错误sheet名会引起报错
#从wb的sheet数组里取得是对象,取得对象属性还需要用 sh1.name等
print(sh1)
print(sh1.name)
print(sh2)
print(sh3)
print()
##获取sheet里的内容
rows=sh1.nrows
columns=sh1.ncols #写sh1.ncolumns报错...
print(rows)
print(columns)
print("{0}这个表有{1}行{2}列".format(sh1.name,rows,columns))
print(sh1.name,"这个表有",rows,"行",columns,"列")
print(f"{sh1.name}这个表有{rows}行{columns}列")
print("%s这个表有%d行%d列" %(sh1,rows,columns))