基本数据类型
知识导图
数字类型的运算
数值运算操作符
Python提供了9个基本的数值运算操作符,如下表所示。这9个操作符与数学习惯一致,运算结果也符合数学意义。
数值运算函数
Python解释器自身提供了一一些预装函数,称为内置函数。
函数 | 描述 |
---|---|
abs(x) | x的绝对值 |
divmod(x,y) | (x//y,x%y),输出为x的整数除与余数除的二元组形式 |
pow(x,y)或pow(x,y,z) | x* *y或(x**y)%z,幂运算 |
round(x)或round(x,d) | 对x四舍五入,保留d位小数,无参数d则返回四舍五入的整数值 |
max(x1,x2,…xn) | x1,x2,…xn的最大值,n没有限定,可以任意数量 |
min(x1,x2,…xn) | x1,x2,…xn的最小值,n没有限定,可以任意数量 |
round(x)对整数或浮点数x进行四舍五入运算。并非所有的.5都会被进位。对于x.5,当x为偶数时,x.5并不进位,如roung(0.5)的值为0,当x为奇数时,x.5进位,如roung(1.5)的值为2。采用“奇进偶不进”的方式运算。
字符串类型及格式转化
单行字符串使用单引号(’)或双引号(")做边界来表示。
多行字符串可以有三单引号(’’’)或三双引号(""")作为边界来表示。
反斜杠()是同一个特殊字符,表示“转义”例如\n表示换行、\表示反斜杠、'表示单引号、"表示双引号、\t表示制表符(Tab)等。
反斜杠()还有一个额外的作用:续行。将一行代码分写在连续不同的行上。
字符串的索引
对字符串中某个字符的检索称为索引,使用方式如下:
<字符串或字符串变量>[序号]
正向从0开始,反向从-1开始。
字符串的切片
对字符串中某个子串或者区间的检索称为切片。使用方式如下:
<字符串或字符串变量>[N:M]
切片获取字符串从N到M(不包括M)的字符串。若N大于M则返回空字符串。若N缺失则默认从0开始。
例如:
>>> "青青子衿,悠悠我心。"[1:4]
'青子衿'
print("青青子衿,悠悠我心。"[1:4])
青子衿
在Python交互式编程环境中,字符串的索引或切片操作可以直接显示结果,结果用’‘方式表示,表达了结果的类型。print()函数打印的字符串则没有’'表示,输出文本字符形式。
format()方式的使用
字符串格式化用于解决字符串和变量同时输出的格式安排问题。
Python语言推荐使用.format()格式化方法,其使用方式如下:
<模板字符串>.format(<逗号分隔的参数>)
例如:
>>> "{1}曰:学而时习之,不亦{0}".format("说乎","孔子")
'孔子曰:学而时习之,不亦说乎'
format()方法格式控制
一些常用的format()方法格式控制信息。
>>> "{:.2f}".format(3.1415926) #输出小数点后2位
'3.14'
>>> "{:x}".format(1010)#输出整数的十六进制形式
'3f2'
>>> "{:.5}".format("这是一个很长的字符串")#输出字符串的前5位
'这是一个很'
>>> "{:-^10}".format("PYTHON")#居中并填充
'--PYTHON--'
字符串类型的操作
字符串操作符
Python提供了3中基本操作符。
字符串处理函数
字符串处理的内置函数。
字符串处理方法
函数采用func(x)方式调用,而方法则采用 “a”.func(x)形式调用,即A.B()形式。方法以前导对象"a"为输入。
- str.split(sep)能够根据sep分隔字符串str。分隔后的内容以列表的形式返回。
>>> "Python is an excellent language.".split()
['Python', 'is', 'an', 'excellent', 'language.']
>>>"Python is an excellent language.".split('a')
['Python is ', 'n excellent l', 'ngu', 'ge.']
- str.count(sub)方法字符串中str 中出现sub的次数,sub是一个字符串。
>>> "Python is an excellent language.".count('an')
2
- str.replace(old,new)将字符串中出现的old字符串替换为new字符串,old和new的长度可以不同。
>>> "Python is an excellent language.".replace('Python','C')
'C is an excellent language.'
可以使用replace()方法去掉字符串中的特定字符或字符串。
>>> "Python is an excellent language.".replace('excellent','')
'Python is an language.'
- str.center(width,fillchar)返回长度为width的字符串。其中,str处于新字符串中心,当width 小于字符串长度时,返回str,fillchar 是单个字符。
>>> "Python".center(20,"=")
'=======Python======='
>>> "Python".center(2,"=")
'Python
- str.strip(chars)从字符串str中去掉在其左侧和右侧chars中列出的字符。
>>> " ==Python== ".strip(' ')
'==Python=='
>>> "==Python==".strip('=')
'Python'
- str.join(iter)将str字符串插入iter变量的元素之间,形成新的字符串。简单说.join()方法能够在一组数据中加分隔符。
>>> ",".join('12345')
'1,2,3,4,5'
类型判断和类型间转换
Python语言提高typr(x)函数对变量x 进行类型判断,使用与任何数据类型。
>>> type(10.10)
<class 'float'>
>>> type(1010)
<class 'int'>
>>> type('10.10')
<class 'str'>
>>> type([1,0,1,0])
<class 'list'>
实例解析——恺撒密码
恺撒密码采用了替换方法将信息中的每一个英文字符替换成字母表序列中该字符后面的第三个字符,即循环右移3位,非英文字母部分直接输出,对应关系如下:
原文文符P,其密码文字符C满足如下条件:
C=(P+3) mod 26
解密方法反之,满足:
P=(C-3) mod 26
例1
加密:
ptxt=input("请输入明文文本:")
for p in ptxt:
if "a"<=p<="z":
print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end='')
elif "A"<=p<="Z":
print(chr(ord("A")+(ord(p)-ord("A")+3)%26),end='')
else:
print(p,end='')
结果
请输入明文文本:This is an excellent Python book.
Wklv lv dq hafhoohqw Sbwkrq errn.
解密:
etxt=input("请输入加密后文本:")
for p in etxt:
if "a"<=p<="z":
print(chr(ord("a")+(ord(p)-ord("a")-3)%26),end='')
elif "A"<=p<="Z":
print(chr(ord("A")+(ord(p)-ord("A")-3)%26),end='')
else:
print(p,end='')
结果
请输入加密后文本:Wklv lv dq hafhoohqw Sbwkrq errn.
This is an excellent Python book.
例2
恺撒密码其加密思想对文字符也十分合适,所不能的是,其可以仅通过移位(而不是循环移位)实现加密。
etxt=input("请输入明文文本:")
for p in etxt:
if "a"<=p<="z":
print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end='')
elif "A"<=p<="Z":
print(chr(ord("A")+(ord(p)-ord("A")+3)%26),end='')
elif 0x4E00<=ord(p)<=0x9FA5:#中文字符加密处理
print(chr(ord(p)+3),end='')
else:
print(p,end='')
结果
请输入明文文本:这是一个用Python进行恺撒密码加密的实例。
远昲七中甫Sbwkrq连衏恽撕寉砄劣寉皇审侎。
课后习题
- 获取用户输入的一个整数,输出该整数百位及以上的数字。
s=input("请输入一个整数:")
print(s[:-2])
结果
请输入一个整数:10086
100
- 获得用户输入的一个字符串,将字符串按照空格分割,然后逐行打印出来。
s=input("请输入一个字符串:")
print(s.split())
结果
请输入一个字符串:我 是 中 国 人。
['我', '是', '中', '国', '人。']
- 程序读入一个表示星期几的数字(1-7),输出对应的星期字符串的名称。例如:输入3,返回”星期三“。
s=input("请输入一个1-7之内的数字:")
print("星期{}".format(s))
结果
请输入一个1-7之内的数字:3
星期3
>>>
=================== RESTART: C:/Users/lenovo/Desktop/程序运行.py ===================
请输入一个1-7之内的数字:7
星期7
>>>
=================== RESTART: C:/Users/lenovo/Desktop/程序运行.py ===================
请输入一个1-7之内的数字:2
星期2
- 设n是任一自然数,如果n的各位数字反向排列所得自然数与n相同,则n被称为回文字。从键盘输入一个5位数字,请编写程序判断这个数字是不是回文字。
n=input("请输入一个5位数字:")
s=n[::-1]
if s==n:
print("{}是回文字".format(n))
else:
print("{}不是回文字".format(n))
结果
请输入一个5位数字:45612
45612不是回文字
>>>
=================== RESTART: C:/Users/lenovo/Desktop/程序运行.py ===================
请输入一个5位数字:32323
32323是回文字
- 输入一个十进制整数,分别输出其二进制、八进制、十六进制字符串。
n=int(input("请输入一个十进制整数:"))
print("{0:b},{0:o},{0:x}".format(n))
结果
请输入一个十进制整数:123
1111011,173,7b