Python入门基础(三)输入、输出及字符串详解
输入输出语句
输入
Python使用函数input()从标准输入读取一行文本即键盘读取,以此来读入用户的输入信息。
msg=input('请输入:')
print(msg)
注意:
通过input()接收的数据默认为str类型,如需转换数据类型,可使用对应数据类型函数转为指定类型,如int(input(’ 请输入数字:’))
输出
常规输出
Python中的数据输出主要是通过内置函数print()来实现,print()有两个重要参数:sep和end,sep表示插入两值之间的字符串,end表示追加到末尾的字符串,print()默认是带换行,可通过给end赋值取消换行,通常是end=’’。
i1=10
i2=20
print(i1)#常规输出
print(i1,i2)#输出多个值使用逗号分隔
print(i1,i2,sep='----',end='*')#两个值之间用虚线分隔,末尾加*号,取消换行
print(i2+i1)
原样输出
有些特定的字符串中可能会含有转义字符,但我们又不希望转义字符起作用,如正则表达式,这时候我们就需要原样输出如print(r’\n’)。
print(r'1\n2')#原样输出1\n2
print('1\n2')#1回车2
print(r'1\t2')#原样输出1\t2
print('1\t2')#1 2
格式化输出
日常生活中,有时候不仅仅是要单纯输出信息,还要保证格式,Python提供了三种方法实现格式化输出。
三引号格式化
三引号在不赋值的情况下是注释功能,在赋值的情况下则是格式化输出功能
msg="""
你好!
Python!
"""
print(msg)
%格式化
可以用如下的方式,对格式进行进一步的控制:
%[(name)][flags][width].[precision]typecode
(name)为命名
flags可以有+,-,’ ‘或0。+表示右对齐。-表示左对齐。’ '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。
width表示显示宽度
precision表示小数点后精度
格式符 | 描述 |
---|---|
%s | 字符串形式输出 |
%r | 字符串形式输出 |
%c | 单个字符形式输出 |
%b | 二进制整数形式输出 |
%d | 十进制整数形式输出 |
%i | 十进制整数形式输出 |
%o | 八进制整数形式输出 |
%x | 十六进制整数形式输出 |
%e | 保留小数点后6位有效数字,指数形式输出 |
%g | 整数大于6位时指数形式输出,否则原样输出,小数默认保留6位有效数字 |
%f | 浮点数形式输出 |
% % | 输出% |
示范例子:
import math
print(1,'%d'%math.pi)#整数
print(2,'%f'%math.pi)#6位有效数字小数
print(3,'%g'%math.pi)#6位长度小数
print(4,'%e'%math.pi)#6位有效数字指数
print(5,'%.2f'%math.pi)#2位有效数字3.14
print(6,'%.*f'%(3,math.pi))#*指代括号第一个数据,%.*f==%.3f
print(7,'%010.2f'%0.5)#保留两位有效数字并左填充8位保证10个长度
print(8,'%+10.2f'%0.5)#右对齐显示正号左填充5个空格保证10个长度
print(9,'%-10.2f'%0.5)#左对齐有填充空格保证10个长度
print(10,'这是第%(n)d条数据'%{'n':10})#通过字典的key来填充
format格式化
Python中最为常见的就是通过format()函数配合{}实现格式化输出。
format函数格式如下:
{参数序号:格式控制符}
格式控制符:
<填充><对齐><宽度>,<精度><类型>
格式表控制符
名称 | 描述 |
---|---|
填充 | 可以填充任意数据,数字、字母、符号… |
对齐 | 三个符号,<左对齐,>右对齐,^居中对齐 |
, | 千位分隔符,如10,000 |
宽度 | 任意正整数 |
精度 | .号开头,表示保留小数位数 |
类型 | 整数类型:b、c、d、o、x、X,浮点数类型:e、E、f、% |
类型表
符号 | 描述 |
---|---|
b | 输出整数的二级制形式 |
c | 输出整数对应的Unicode字符 |
d | 输出整数的十进制形式 |
o | 输出整数的八进制形式 |
x | 输出整数的小写十六进制 |
X | 输出整数的大写十六进制 |
e | 输出浮点数的e指数形式 |
E | 输出浮点数的E指数形式 |
f | 输出浮点数 |
% | 百分比形式输出浮点数 |
示范例子:
import math
#无参情况,format函数会将参数依次填充,默认第一个参数索引为0,format的参数只能比{}多,不能少!
print("1-->{}".format(123))
print("2-->{}\t{}".format(123,456))#123填入第一个{},456填入第二个{},以此类推
#有参情况
print("3-->{1}\t{0}".format(123,456))#指定位置,将456填充到第一个{},123填充到第二个{}
#整数
print("4-->{:,}".format(1000000))
print("5-->{:b}".format(123))#二进制形式输出
print("6-->{:c}".format(123))#Unicode形式输出
print("7-->{:d}".format(123))#十进制形式输出
print("8-->{:x}".format(123))#十六进制小写形式输出
print("9-->{:X}".format(123))#十六进制大写形式输出
#浮点数
print("10-->{:e}".format(3.1415))#e指数形式输出浮点数,默认6位小数
print("11-->{:E}".format(3.1415))#E指数形式输出浮点数,默认6位小数
print("12-->{:f}".format(3.1415))#浮点数指数形式输出浮点,数默认6位小数
print("13-->{:%}".format(3.1415))#百分比指数形式输出浮点数,默认6位小数
print("14-->{0:.2f}\t{1:.2f}".format(math.pi,0.123456))#指定位置,并保留2位小数,浮点数形式输出
print("15-->{:>10.2f}".format(math.pi))#右对齐,宽度10,填充空格,保留2位小数,浮点数形式输出
print("16-->{:*<10.2f}".format(math.pi))#左对齐,宽度10,填充*,保留2位小数,浮点数形式输出
print("17-->{:*^10.2f}".format(math.pi))#居中对齐,宽度10,填充*,保留2位小数,浮点数形式输出
注意:
有填充时必须要有对齐
字符串类型
创建字符串
1、单引号、双引号或三引号都可以创建字符串
s1='你好'
s2="你好"
s3='''你好'''
s4="""你好"""
2、str()函数创建
a=10
s=str(a)
print(s)
3、+拼接创建字符串
s="num:"+'10'
print(s)
4、创建长字符串
s='123456' \
'78910' \
'111213'
print(s)
字符串操作符
a=‘abc’ b=‘xyz’
符号 | 描述 |
---|---|
+ | 字符串拼接 如a+b=>‘abcxyz’ |
* | 字符串重复 如a*3=>‘abcabcabc’ |
[] | 获取字符串中某个字符如a[1]=>‘b’ |
[:] | 截取字符串如a[0:2]=>‘ab’ |
in | 如果字符在字符串中返回True,否则返回False ,如’c’ in a=>True |
not in | 如果字符不在字符串中返回True,否则返回False,如’d’ not in a=>True |
r/R | 字符串原样输出,如print(r’\n’)=>’\n’ |
字符串驻留机制(Intern机制)
Python为了优化效率,使用了Intern机制,intern机制是值相同的字符串对象会保存一份到字符串存储池中,这个池子是共用的,也是不可改变的。
实现原理
实现 Intern 机制的方式非常简单,就是通过维护一个字符串储蓄池,这个池子是一个字典结构,如果字符串已经存在于池子中了就不再去创建新的字符串,直接返回之前创建好的字符串对象,如果之前还没有加入到该池子中,则先构造一个字符串对象,并把这个对象加入到池子中去,方便下一次获取。
启用时机
1.在shell中示例,并非全部的字符串都会采用intern机制。仅仅包括下划线、数字、字母的字符串才会被intern。
>>> a='hello'
>>> b='hello'
>>> print(a is b)
True
>>> a='hello123'
>>> b='hello123'
>>> print(a is b)
True
>>> a='hello_123'
>>> b='hello_123'
>>> print(a is b)
True
>>> a='hello 123'
>>> b='hello 123'
>>> print(a is b)
False
2、变量拼接时
>>> s1='a'
>>> s2='abc'
>>> print(s1+'bc' is s2)#s1是变量,只有运行时才会拼接,所以不被intern
False
>>> s1='a'
>>> s2='abc'
>>> print('a'+'bc' is s2)#'a'+'bc'编译时就变成'abc'了,所以是同一字符串
True
3、pycharm中只要是同一字符串都会被intern。
常见函数
函数名 | 描述 |
---|---|
string.count(str[start,end]) | 返回str在string中出现的次数,可指定范围 |
string.find(str[start,end]) | 在string中查找str,有就返回第一次出现的下标,没有就返回-1,可指定范围 |
string.rfind(str[start,end]) | 右边查找,作用同find,可指定范围 |
string.index(str[start,end]) | 同find,但找不到会报错,可指定范围 |
string.rindex(str[start,end]) | 右边查找,作用同index,可指定范围 |
string.upper() | 将字符串中所有字母大写 |
string.lower() | 将字符串中所有字母小写 |
string. strip() | 去除字符串左右的空格 |
string.lstrip() | 去除字符串左边的空格 |
string.rstrip() | 去除字符串右边的空格 |
string.replace(str1,str2[,max]) | 将字符串中的str1替换为str2,最多可替换max次 |
string.split(str[,max]) | 将字符串按照str分隔,最多可分隔max次 |
str.join(seq) | 将序列通过str连接成一个字符串 |
string.startswith(str[start,end]) | 判断字符串是否以str开头,可指定范围 |
string.endswith(str[start,end]) | 判断字符串是否以str结尾,可指定范围 |
string.swapcase() | 将字符串中的大写变小写,小写变大写 |