1、数字类型
a、Python语言提供3种数字类型: 整 数 类 型 、 浮 点 数 类 型 和 复 数 \color{red}{整数类型、浮点 数类型和复数} 整数类型、浮点数类型和复数类型,分别对应数学中的整数、实 数和复数。
b、1010是一个整数类型,10.10是一个浮点数类型, 10 + 10j是一个复数类型。
2、整数类型
a、与数学中的整数概念一致,没有取值范围限制
b、整数类型有4种进制表示:十进制、二进制、八进 制和十六进制。默认情况,整数采用十进制,其他进制需要增加引导符号
3、浮点类型
a、带有小数点及小数的数字
b、Python语言中的浮点数类型 必 须 \color{red}{必须} 必须带有小数部
分,小数部分可以是0。例如:1010是整数, 1010.0是浮点数。
c、浮点数有2种表示方法:十进制形式的 一 般 表 示 \color{red}{一般表示} 一般表示和 科 学 计 数 法 \color{red}{科学计数法} 科学计数法表示。除十进制外,浮点 数没有其他进制表示形式。下面是浮点数类 型的例子:
1010.0, -1010., 1.01e3, -1.01E-3
d、科学计数法使用字母e或者E作为幂的符号, 以10为基数,含义如下:
< a > e < b > = a ∗ 10 b \color{red}{<a>e<b> = a*10b} <a>e<b>=a∗10b
4、复数类型
a、复数类型表示数学中的复数。复数有一个基本单 位元素j,叫作“虚数单位”。含有虚数单位的数 被称为复数。例如:
11.3+4j -5.6+7j 1.23e-4+5.67e+89j
b、Python语言中,复数可以看作是二元有序实数对 (a, b),表示为:a + bj,其中,a是实数部分, 简称实部,b是虚数部分,简称虚部。虚数部分通 过后缀“J”或者“j”来表示。需要注意,** 当 b 为 1 时 , 1 不 能 省 略 , \color{red}{当b为1时, 1不能省略,} 当b为1时,1不能省略,**即 1j表示复数,而j则表示Python程序 中的一个变量。
c、复数类型中实部和虚部都是浮点类型,对于复数z,可以用 z.real和z.imag分别获得它的实数部分和虚数部分
>>>(1.23e4+5.67e4j).real
12300.0
>>>(1.23e4+5.67e4j).imag
56700.0
>>>1.23e4+5.67e4j.imag # 先获得5.67e4j的虚部,再与1.23e4进行求和计算
69000.0
1、数值运算操作符
a、Python提供了9个基本的数值运算操作符
b、上标所有二元运算操作符(+、-、、/、//、%、**)都可 以与等号(=)相连,形成增强赋值操作符(+=、-=、=、 /=、//=、%=、**=)。用op表示这些二元运算操作符,增 强赋值操作符的用法如下:
x o p = y 等 价 于 x = x o p y \color{red}{x op = y 等价于 x = x op y} xop=y等价于x=xopy
>>>x = 99
>>>x **=3 # 与x = x**3等价 >>>print(x)
970299
c、数值运算可能改变结果的数据类型,类型的改变与运
算符有关,有如下基本规则:
①整数和浮点数混合运算,输出结果是浮点数;
②整数之间运算,产生结果类型与操作符相关,/运算的结果是浮点数;
③整数或浮点数与复数运算,输出结果是复数。
>>>1010/10 # /运算的结果是浮点数
101.0
>>>1010.0//3 # 浮点数与整数运算,产生结果是浮点数
336.0
>>>1010.0 % 3 # 浮点数与整数运算,产生结果是浮点数
2.0
>>>10-1+1j #等价于10–(1+1j)
(9+1j)
2、数值运算函数
a、Python解释器提供了一些内置函数,在这些内置函 数之中,有6个函数与数值运算相关:
1、字符串类型
a、字符串是字符的序列表示,根据字符串的内容多 少分为单行字符串和多行字符串。
b、单行字符串可以由一对单引号(’)或双引号(") 作为边界来表示,单引号和双引号作用相同。
c、多行字符串可以由一对三单引号(’’’)或三双引 号(""")作为边界来表示,两者作用相同。
>>> print('这是"单行字符串"')
这是"单行字符串"
>>> print("这是'单行字符串'")
这是'单行字符串'
>>>print("""这是'多行字符串'的第一行
这是'多行字符串'的第二行
""")
这是'多行字符串'的第一行
这是'多行字符串'的第二行
>>>print('''这是"多行字符串"的第一行
这是"多行字符串"的第二行
''')
这是"多行字符串"的第一行
这是"多行字符串"的第二行
d、Python语言转义符:
例如:\n表示换行、\表示反斜杠、'表示单引
号、"表示双引号、\t表示制表符(TAB)等。
>>>print("既需要'单引号'又需要\"双引号\"")
既需要'单引号'又需要"双引号"
e、字符串的索引
I、字符串是一个字符序列:字符串最左端位置标记为0,依次 增加。对字符串中某个字符的检索被称为索引。索引的使用 方式如下:
< 字 符 串 或 字 符 串 变 量 > [ 序 号 ] \color{red}{<字符串或字符串变量>[序号]} <字符串或字符串变量>[序号]
II、如果字符串长度为L,正向递增需要以最左侧字符序号为0, 向右依次递增,最右侧字符序号为L-1;反向递减序号以最 右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。
III、字符串以Unicode编码存储,字符串的英文字符和 中文字符都算作1个字符。
>>>"青青子衿,悠悠我心。"[-5]
'悠'
>>>s = "青青子衿,悠悠我心。"
>>>s[5]
'悠'
f、字符串的切片
I、对字符串中某个子串或区间的检索被称为切片。切 片的使用方式如下:
< 字 符 串 或 字 符 串 变 量 > [ N : M ] \color{red}{<字符串或字符串变量>[N: M]} <字符串或字符串变量>[N:M]
>>>"青青子衿,悠悠我心。"[8:4]
''
>>>"青青子衿,悠悠我心。"[:4]
'青青子衿'
>>>"青青子衿,悠悠我心。"[5:]
'悠悠我心。'
>>>print("青青子衿,悠悠我心。"[5:])
悠悠我心。
>>>print("青青子衿,悠悠我心。"[:])
青青子衿,悠悠我心。
g、format()方法的基本使用
I、字符串format()方法的基本使用格式是:
< 模 板 字 符 串 > . f o r m a t ( < 逗 号 分 隔 的 参 数 > ) \color{red}{<模板字符串>.format(<逗号分隔的参数>) } <模板字符串>.format(<逗号分隔的参数>)
其中,模板字符串是一个由字符串和槽组成的字符 串,用来控制字符串和变量的显示效果。槽用大括 号({})表示,对应format()方法中逗号分隔的参数。
>>>"{}曰:学而时习之,不亦说乎。".format("孔子")
'孔子曰:学而时习之,不亦说乎。'
II、如果模板字符串有多个槽,且槽内没有指定序号, 则按照槽出现的顺序分别对应.format()方法中的 不同参数。
>>>"{}曰:学而时习之,不亦{}。".format("孔子","说乎")
'孔子曰:学而时习之,不亦说乎。'
III、可以通过format()参数的序号在模板字符串槽中 指定参数的使用,参数从0开始编号
>>>"{1}曰:学而时习之,不亦{0}。".format("说乎","孔子")
'孔子曰:学而时习之,不亦说乎。'
>>>"{1}曰:{{学而时习之,不亦{0}}}。".format("说乎","孔子")"
'孔子曰:{学而时习之,不亦说乎}。'
h、format()方法的格式控制
I、format()方法中模板字符串的槽除了包括参数序号,还 可以包括格式控制信息。
< 参 数 序 号 > : < 格 式 控 制 标 记 > \color{red}{{<参数序号>: <格式控制标记>}} <参数序号>:<格式控制标记>
II、其中,格式控制标记用来控制参数显示时的格式 。格式
控制标记包括:<填充><对齐><宽度>,<.精度><类型>6个 字段,这些字段都是可选的,可以组合使用
① <填充>、<对齐>和<宽度>主要用于对显示格式的规范。
②宽度指当前槽的设定输出字符宽度, 如 果 该 槽 参 数 实 际 值 比 宽 度 设 定 值 大 , 则 使 用 参 数 实 际 长 度 \color{red}{如果该槽参数实际 值比宽度设定值大,则使用参数实际长度} 如果该槽参数实际值比宽度设定值大,则使用参数实际长度。如果该值的 实际位数小于指定宽度,则按照对齐指定方式在宽度内 对齐, 默 认 以 空 格 字 符 补 充 \color{red}{默认以空格字符补充} 默认以空格字符补充。
③对齐字段分别使用<、>和^三个符号表示左对齐、右对 齐和居中对齐, 默 认 左 对 齐 \color{red}{默认左对齐} 默认左对齐。
④填充字段可以修改默认填充字符,填充字符只能有一个。
>>>s = "等级考试"
>>>"{:25}".format(s) #左对齐,默认
'等级考试 '
>>>"{:^25}".format(s) #居中对齐
' 等级考试 '
>>>"{:>25}".format(s) #右对齐
' 等级考试 '
>>>"{:*^25}".format(s) #居中对齐且填充*号
'**********等级考试***********'
>>>"{:+^25}".format(s) #居中对齐且填充+号
'++++++++++等级考试+++++++++++'
>>>"{:十^25}".format(s) #居中对齐且填充汉字“十”
'十十十十十十十十十十等级考试十十十十十十十十十十十'
>>>"{:^1}".format(s) #z指定宽度为1,不足变量s的宽度
'等级考试'
⑥<.精度><类型>主要用于对数值本身的规范
⑦<.精度>由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。小数点可以理解为对数值的有效截断。
>>>"{:.2f}".format(12345.67890)
'12345.68'
>>>"{:>25.3f}".format(12345.67890)
' 12345.679'
>>>"{:.5}".format("全国计算机等级考试")
'全国计算机'
⑧<类型>表示输出整数和浮点数类型的格式规则。
对于整数类型,输出格式包括6种:
• b: 输出整数的二进制方式;
• c: 输出整数对应的Unicode字符;
• d: 输出整数的十进制方式;
• o: 输出整数的八进制方式;
• x: 输出整数的小写十六进制方式; • X: 输出整数的大写十六进制方式;
>>>"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
'110101001,Ʃ,425,651,1a9,1A9'
⑨对于浮点数类型,输出格式包括4种:
• e: 输出浮点数对应的小写字母e的指数形式;
• E: 输出浮点数对应的大写字母E的指数形式;
• f: 输出浮点数的标准浮点形式;
• %: 输出浮点数的百分形式。
>>>"{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
>>>"{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14) # 对比输 出
'3.14e+00,3.14E+00,3.14,314.00%'
j、常用的format()方法格式控制信息
>>>"{:.2f}".format(3.1415926) # 输出小数点后两位
'3.14'
>>>"{:x}".format(1010) # 输出整数的十六机制形式
'3f2'
>>>"{:.5}".format("这是一个很长的字符串") # 输出字符串的前5位
'这是一个很'
>>>"{:-^10}".format("PYTHON") # 居中并填充
'--PYTHON--'
2、字符串类型的操作
a、字符串操作符
针对字符串,Python语言提供了几个基本操作符
>>>name = "Python语言" + "程序设计"
>>>name
'Python语言程序设计'
>>>"等级考试!" * 3
'等级考试!等级考试!等级考试!'
>>>"语言" in name
True
>>>'Y' in name
False
>>>len("全国计算机等级考试Python语言科目")
19
>>>chr(100)
'd'
>>>hex(1010)
'0x3f2'
c、字符串处理方法
方法也是一个函数,只是调用方式不同。函数采用func(x) 方式调用,而方法则采用.func(x)形式调用。方法仅 作用于前导对象。
①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.']
>>>"Python is an excellent language.".split('an')
['Python is ', ' excellent l', 'guage.']
②str.count(sub)方法返回字符串str中出现sub的次数,sub 是一个字符串。
>>>"Python is an excellent language.".count('a')
3
③str.replace(old, new)方法将字符串str中出现的old字符串 替换为new字符串,old和new的长度可以不同。
>>>"Python is an excellent language.".replace('a', '#')
'Python is #n excellent l#ngu#ge.'
>>>"Python is an excellent language.".replace('Python', 'C')
'C is an excellent language.'
④str.center(width, fillchar)方法返回长度为width的字符串, 其中,str处于新字符串中心位置,两侧新增字符采用 fillchar填充,当width小于字符串长度时,返回str。其 中,fillchar是单个字符。
>>>"Python".center(20, "=")
'=======Python======='
>>>"Python".center(2, "=")
'Python'
⑤str.strip(chars)从字符串str中去掉在其左侧和右侧chars 中列出的字符。chars是一个字符串,其中出现的每个字 符都会被去掉。
>>>print(' ===python=== '.strip(' '))
===python===
>>>print(' ===python=== '.strip(' ='))
python
>>>print(' ===python=== '.strip(' =n'))
pytho
⑥str.join(iter)中iter是一个具备迭代性质的变量,该方法将 str字符串插入iter变量的元素之间,形成新的字符串
>>>" ".join('PYTHON')
'P Y T H O N'
>>>",".join('12345')
'1,2,3,4,5'
>>>",".join(['1', '2', '3', '4', '5'])
'1,2,3,4,5'
1、数字类型的转换
a、Python语言提供type(x)函数对变量x进行类型判 断,适用于任何数据类型。
n = eval(input('请输入一个数字:'))
if type(n) == type(123):
print("输入的数字是整数。")
elif type(n) == type(11.3):
print("输入的数字是浮点数。")
else:
print("无法判断输入类型。")
b、数值运算操作符可以隐式地转换输出结果的数 字类型,例如,两个整数采用运算符“/”的除法 将可能输出浮点数结果。
c、此外,通过内置的数字类型转换函数可以显式 地在数字类型之间进行转换
恺撒撒密码是古罗马恺撒大帝用来对军事情报进行加密 的算法,它采用了替换方法对信息中的每一个英文字符 循环替换为字母表序列该字符后面第三个字符:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
n 原文字符P,其密文字符C满足如下条件:
C = ( P + 3 ) m o d 26 \color{red}{C = ( P + 3 ) mod 26} C=(P+3)mod26
n 解密方法反之,满足:
P = ( C – 3 ) m o d 26 \color{red}{P = ( C – 3 ) mod 26} P=(C–3)mod26
1、恺撒密码-加密
chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
ord()返回值是对应的十进制整数。
比如:
txt = input('请输入明文文本:')
for t in txt:
if 'a' <= t <= 'z':
print(chr(ord("a") + (ord(t) - ord("a") + 3) % 26), end='')
elif 'A' <= t <= 'Z':
print(chr(ord("A") + (ord(t) - ord("A") + 3) % 26), end='')
else:
print(t, end='')
2、恺撒密码-解密
txt = input('请输入加密后的文本:')
for t in txt:
if 'a' <= t <= 'z':
print(chr(ord("a") + (ord(t) - ord("a") - 3) % 26), end='')
elif 'A' <= t <= 'Z':
print(chr(ord("A") + (ord(t) - ord("A") - 3) % 26), end='')
else:
print(t, end='')
如果你有更好的解法或者有不同的意见,大家可以畅所欲言,共同提高进步!
群主也是小白一枚,零基础学习python,要勇于提问,大家共同探讨,共同学习进步!
明月几时有?把酒问青天。