python学习笔记--NO.1输入输出


本文是学习Python速查手册的笔记,如有不对请指教

一、input( )函数

1. 语法

input(prompt)

input()函数接受所有用户输入内容,返回一个字符串

在python3.7中所有的输入都是作为字符串被读取的,要改变类型需要对字符串进行类型转换。

tips:ord()函数将字符转换为对应的ASCII码

num = int(input("输入一个数:"))
print(num)
print(type(num))

n = input("请输入:")
value = ord(n)
print(n + "的ASCII码为",value)
print(type(n))

输出结果:
	输入一个数:1
	1
	<class 'int'>
	请输入:2
	2的ASCII码为 50
	<class 'str'>

2. 常用方法

2.1 常用输入

prompt可以为空(不提示任何信息)
也可以加转义字符(\n表示换行)

2.2 去除输入的非法字符

使用字符串函数strip()、lstrip()、rstrip()方法

方法作用
strip()去除两边字符
lstrip()去除左边字符
rstrip()去除右边字符

tips:传入的是一个字符数组,编译器去除两端所有相应的字符,直到没有匹配的字符。一般使用空格较多。

#实际上是删除两边开始与['s','a','y']内匹配的所有字符
#直到匹配不到停止

theString = 'saaaay yes no yaaaass'
print(theString.strip('say'))
print(theString.strip('say '))#say后面有空格
print(theString.lstrip('say'))
print(theString.rstrip('say'))

输出结果:
 yes no 
es no 
 yes no yaaaass 
saaaay yes no 

2.3 多数据输入

1.使用字符串split()方法进行分割

方法作用
split()通过指定分隔符对字符串进行切片

如果参数 num 有指定值,则分隔 num+1 个子字符串

a,b,c = input("输入3个字符,用逗号分隔:\n").split(",")#不限定输入类型
m,n = map(int,input("输入2个数字,用空格分隔:").split())#限定int类型
print(a,b,c)
print(m,n)

结果:
输入3个字符,用逗号分隔:
q,w,e
输入2个数字,用空格分隔:1 2
q w e
1 2
#有限定时输入若错误返回ValueError

map()方法是一种函数-值的映射

2.使用循环实现一行多值输入

sum = 0
for i in input("请输入:用空格分隔:\n").split(" "):
    sum += int(i)
print(sum)

结果:
请输入:用空格分隔:
1 2 3 4 5
15

2.4 强制转换输入(含字母大小写方法)

1.int(),float(),str()等强制转换类型

n = input("输入1:")
int(n)
print(type(n))

m = int(input("输入2:"))
print(type(m))

结果:
输入1:1
<class 'str'>
输入2:2
<class 'int'>

2.字母大小写转换

方法作用
upper()字符串全大写
capitalize()字符串首字母大写
title()字符串每个单词首字母大写
lower()字符串全小写
words = "zhan lang"
print(words.title())
print(words.capitalize())
print(words.upper())

结果:
Zhan Lang
Zhan lang
ZHAN LANG

2.5 对输入数据验证

方法作用
isalnum()所有字符都是字母或者数字
isalpha()所有字符都是字母
isdigit()所有字符都是数字
isupper()所有字符都是大写字母
islower()所有字符都是小写字母
istitle()所有单词都是大写
isspace()所有字符都是空白、\t、\n、\r

这些方法的返回值都是bool类型

if input('输入').isdigit():
	print("xx")
else:
	pass

字符串的方法简单但是有时不够灵活
所以可以使用ASCII码进行验证,配合ord()方法

二、open( )函数–文件

1. 语法

open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)

file:必填参数,文件路径(引号括起来)

mode:可选参数,指定文件打开模式

说明
ropen for reading (default)
wopen for writing, truncating the file first
xcreate a new file and open it for writing
aopen for writing, appending to the end of the file if it exists
bbinary mode
ttext mode (default)
+open a disk file for updating (reading and writing)
Uuniversal newline mode (deprecated)

buffering:可选参数,指定读写文件的缓冲模式
encoding:文件编码模式,默认UTF-8
errors:遇到错误的报错严格程度
newline:区分换行符
closefd:传入file参数类型

2. 文件基本操作

首先明确,文件中操作都是依靠指针移动的

方法作用
read(size)读取整个文件并返回,size表示读取字符数,为0时默认读取整个文件
readline(size)读取某行文件内容并返回,size表示读取此行多少字符
readlines()读取每行文件内容并返回一个列表
write(obj)将内容obj写入文件 ,前提是w或a模式打开
tell()返回文件指针当前位置
seek(offset,whence)移动文件指针,offset指定移动字符个数,whence指定开始移动位置,0表示从头开始,1表示从当前位置开始,2表示中文件为开始,默认为0
close()关闭文件
fp = open(r"fff.txt")
print(fp.readline(4)+'\n***************')
print(fp.read()+'\n***************')

结果:
this
***************
 is the first line
second line here
oh third
***************
#可以看到第二个read()不是从头开始,而是从指针位置开始

例:输出每行的前4个字符

fp = open(r"fff.txt")
while True:
    line = fp.readline(4)
    fp.readline()#读完此行指针自动调到下一行开始
    #只用line = fp.readline(4)会连着读,只要一行读完才换行
    print(line)
    if line == '':
        break
fp.close()

3 常用

3.1 with open语句

with open会有一个界限,所以超出with语句会自动关闭文件不需要调用close()方法

#打印每行
with open("fff.txt",'r') as f:
    lines = f.readlines()
    for line in lines:
        print(line)

3.2 多个文件的读取操作

除了分别读取,赋值,打印,有一个更简单的方法,即zip()函数

f1 = open('file1.txt','r')
f2 = open('file2.txt','r')
f3 = open('file3.txt','r')
for i,j,k in zip(f1,f2,f3):#读取每个文件的内容
    print(i,j,k)

3.3 读取一个文件夹下所有文件

遍历该目录下所有文件,循环读取每个文件的内容到列表,最后将每个文件的内容添加到列表。

import os #文件与系统操作模块
path = '.temp/mr'#相对地址
names = os.listdir(path)#获取目录下所有文件的名称列表
all = []
for item in names:
    f = open(path+'/'+item)#读取每个文件
    new = []#保存单个文件内容
    for i in f:
        new.append(i)
    all.append(new)
for i in all:
    print(i)#遍历输出

三、print( )函数

1.语法

print(value, … , sep=’ ‘, end=’\n’, file=None)

value:要输出的值,可以各种类型的变量
:打印多个值用分隔",“打印出来默认是空格,字符串可以用”+"连接
sep:打印值时的分隔符,默认是空格
end:打印结尾的值,默认是换行符\n

tips:sep和end的参数必须是字符串

2.常用

2.1 输出字符串

print("字符串")#最常用
print(''' 123
456:--------------
789:--------------''')#三引号跨行输出
print("字符串1"+"字符串2")#连接字符串输出
print('2021','1','1',sep='-')#输出2021-1-1

使用chr()函数,可以根据ASCII码输出字符

print(chr(65))#结果是A

2.2 进制输出

x = 112
print("%o"%x)#使用操作符输出八进制数
print("%o %d %x"%(x,x,x))#使用操作符输出八,十,十六进制数
print(bin(x),oct(x),hex(x))#使用函数输出二,八,十六进制数

#综合输出进制数
print("int: {0:d}, hex: {0:x}, oct:{0:o}, bin: {0:b}".format(x))
print("int: {0:#o}".format(x))

结果:
160
160 112 70
0b1110000 0o160 0x70
int: 112, hex: 70, oct:160, bin: 1110000
int: 0o160

2.3 彩色输出

格式为
print(’\033[显示方式;前景色;背景色m 字符串 \033[0m’)

显示方法意义
0终端默认设置
1高亮
4带下划线
5闪烁
7反白显示
8不可见
前景色/背景色颜色
30/40
31/41
32/42绿
33/43
34/44
35/45紫红
36/46青蓝
37/47白色
print('\033[1;41;44m 字符串 \033[0m')

结果:输出结果

2.4 对齐输出和指定位数输出

方法作用
rjust(int,‘符号’)左对齐,数字代表字符串占位数,符号表示占位符号
ljust(int,‘符号’)右对齐
center(int,‘符号’)中间对齐
zfill(int)固定位数输出

format方法详解见字符串章节

2.5 标准输入sys.stdin和标准输出sys.stout.write()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值