Chapter-1
约 3409 字大约 11 分钟
2025-10-12
python语言特点
1.语法简洁:实现相同功能,python语言代码行数少,大约为c语言的五分之一到十分之一
2.开源,有强大的第三方库支撑
3.强制可读性,使用缩进来表示代码的层次关系,提高协同工作效率
4.粘性扩展:可以集成其他语言编写的代码
5.面向过程+面向对象
6.与平台无关,Windows/Mac/Linux均可使用
当然也有缺点——运行速度慢:约为c语言的五分之一到十分之一
解决方法:计算密集型使用GPU,粘性扩展使用c语言库优化功能
1.1 例:身份证号的性别判断
身份证号顺序码第三位,偶-女性,奇-男性
I(imput) P(processing) O(output)
# 身份证号码的判断程序(这是一个注释)
id_code=input("请输入18位身份证号码:")
number=int(id_code[-2]) #使用了字符串的索引
if number%2==0: #百分号求余数,判断是不是偶数
print("女")
else:
print("男")
input转化为字符串
int()转化为整数, 从而进行数值运算 (注意:不四舍五入地转化成整数;浮点数字符串不能直接转化成整数,要先用float)
float()转化为浮点数
str代表字符串,int代表数值=意味着赋值,== 意味着判断是否等于 if else:分支语句
字符串必须要用引号引用,否则就是变量
文件模式下必须使用print()才能输出
另强调,使用英文输入法的标点;拼写注意大小写
1.2 基本概念
1.注释
单行注释:见上方 多行注释:三单引号 回车⋯另起一行 三单引号
'''
这是第一行
这是第二行
多行注释实际上就是一个字符串
'''2.变量
用三个元素描述变量:变量类型,变量名称,变量值
temp=123 那么temp是变量名称,123是变量值
变量命名规则:
- 名称 不能出现空格 ,@#这类符号也会报错,只有下划线可用
- 首字符 一定不能用数字
- 不能用python中的关键字
- 大小写敏感,Temp和temp是两个不同的变量
- 最好别用中文,可以有但是不符合习惯
- 也不要用python内置函数(不会弹报错,但函数会覆盖命名)
满足前三条我们说它 符合语法规则 ,但是合法不一定规范
如果不合法 会显示语法错误SyntaxError
3.关键字
也叫保留字,编程语言内部定义并保留使用的标识符
在交互模式下调出关键字
import keyword
print(keyword,kwlist)需要辨认出哪些是关键字,关键字共有35个
True / False / None / and / as / assert / async / await / break / class /
continue / def / del / elif / else / except / finally / for / from / global /
if / import / in / is / lambda / nonlocal / not / or / pass / raise /
return / try / while / with / yield
4.缩进,程序框架
缩进是表明程序框架的唯一手段 tab和空格不要混用!!! 推荐都用tab
1.3 数据类型
一,分类
基本数据类型
- 数值:整数,浮点数,虚数
- 字符串
- 布尔类型:True False
- 空类型:None
组合数据类型
- 元组:不可被改变的 (0,2,4,6)
- 列表:可改变的 [0,1,1,2]
- 集合:无序,不重复(元素去重)
- 字典:成对出现,快速查找
>>>temp =100
>>>type(temp)
<class 'int'>
>>>temp = "100"
>>>type(temp)
<chass 'str'>二, 数值类型
1.类型
整数类型,浮点数类型,复数类型(大概率用不到)
计算机擅长做数值运算,而且整数运算要快很多
2.整数类型
与数学中整数定义一致, 取值范围没有限制 ,虽然实际情况会有内存的限制
(1) OX,Ox开头表示十六进制数;OO,Oo开头表示八进制数;OB,Ob开头表示二进制数
(2)pow(x,y) 返回 xy 的值
3.浮点数类型
与数学中实数一致,有小数或小数点的数字,取值范围与精度 有限制 ,所以不用浮点数作比较运算
例:”96e4“科学计数法,表示 96∗104 ,也是浮点数
我们使用E或者e代表幂的符号,以10为基数, 科学记数法的数一定会是小数
三,算数运算(数值)
除了加减乘除之外:
x/y 结果为浮点数 4/2的结果是2.0,y不等于0
x//y 除法取整,既不大于商的最大整数
x%y 除法取余,也叫模运算
x**y 表示乘方
运算优先级(从高到低): ();幂运算;加减运算符;算数运算符;关系运算符;赋值运算符
幂运算符并列,从右开始运算 2**3**4=2**(3**4)
左侧有负号,幂运算优先;右侧有负号,一元运算符优先
-3**2=-(3**2) 而3**-2=3**(-2)
三种类型有扩展关系,最宽的是复数,然后是浮点数,运算生成结果为最宽的类型
复合运算运算符:注意符号与=没有空格 ,不然就会报错
x+=1表示x=x+1
四、关系运算(数值类型的)
关系运算符:输出结果为布尔类型
!=表示 = ;>=表示 ≥
整数和浮点数只要数值相等就是相等的
当然因为浮点数有精度损失,不建议用浮点数
内置的算术运算函数
显式在数字类型之间转换,也可以转换字符串:int(),float()
浮点数转换到整数不会四舍五入,直接去除小数部分;反过来则会加上小数部分
abs(x)x的绝对值
round(x[,ndigits])对x四舍五入,保留ndigits位小数,round(x)返回四舍五入的整数值(这里会省略末尾的0)
max(a,b,c,....)找最大值
1.4 字符串
1、用单引号或者双引号或者三单引号括起来的零个一个或多个字符
2、注意区分 字符串,变量,数字和数字字符串。总而言之加引号,不加在一些情况认为是变量
3、转义字符“\"
输出带引号的字符串,常规所有引号前面加\
如果外部是双引号,内部单引号不转义也能输出,反之亦然
\\斜杠
\n换行,光标在下行行首
\r回车,光标在本行行首
\t水平制表
4.操作符
+拼接字符串,不能用它把字符串和别的类型连起来
*复制字符串,0或负整数结果为空字符串(输出的是‘’),不能输浮点数
x in s判断x是否是s的子串,返回布尔值,x如果是连在一起的那么s中 也连接 才是子串
5.字符串是一种可遍历结构,可以使用for循环对它进行遍历,遍历的次数为字符数(包括空格在内,空格算一个)
6.字符串索引
<string>[<索引>] 最左端标记为0 ,最右端第一个字符为 -1,标记的编号就叫做索引
跳出了索引范围会报错
number = input("输入一个三位数")
bai = int(number[0])
shi = int(number[1])
ge = int(number[2])7.字符串切片
<string>[<start>:<end>] 从索引后面取y个,数数的时候空格占一位,但是输出没有空格
从索引start开始到索引end结束,但是不包括end的位置
超出索引 不会报错
正向索引时首位标为0,反向索引时末尾标为-1
使用反向索引时,返回依旧是从左往右的
可以同时使用正反索引
start值与end值都可以为空(表示一直到开头或者结尾),都为空时一般用于字符串复制
8.字符串处理函数
len() 返回字符串长度(标点、空格长度为1),也可返回元组、列表、集合、字典(表示成员个数)等数据类型的长度
str() 转化成字符串
ord() 将 单个 (多个会报错)字符转换为Unicode编码
ord('a')97 ;ord('A')65 ;0为48;空格为32;
小写字母>大写字母>数字
chr() 将编码转换为对应的符号
以下s表示字符串
s.lower() 大写变小写; s.upper() 小写变大写 ,这两个返回的是副本
s.isdigit() 当s所有字符都是阿拉伯数字时返回True
s.isalpha() 都是字母
s.isspace() 当s所有字符都是空格返回True
s.endswith(suffix) s.startswith(prefix) 判断开头结尾是不是True
s.split(sep) 返回一个列表,由s根据sep被分割的部分构成,split开头结尾也有会有空元素
s.join() 列表中字符串,用s分割,与上一个互逆(每个元素必须是字符串才能拼接,也就是用引号引起来)
s.count(sub) 返回s中sub出现的次数(不能直接统计单词次数,也不建议用于中文统计)
s.replace(old,new) 返回s的副本,所有old子串替换成new,old和new要使用引号
s.strip([chars]) 去除字符串两端(中间的不去除)chars中列出的字符,不改变原字符串
9.字符串格式化
<模板字符串>.format(<逗号分隔的参数>)
'身份证号{}倒数第二位{},性别为{}'.format("110101220100101557X",7,"男") #槽位顺序与参数顺序对应
'身份证号{2}倒数第二位{0},性别为{1}'.format(7,"男","110101220100101557X")
#槽的顺序可以改变
#format中提供的参数可以多不可以少,少了就会Traceback()除了参数序号,还可以有格式控制信息
格式控制标记有六个字段
: 引导符号
, 数字千位分隔符,适用于整数和浮点数
<填充>用于填充的单个字符
<对齐> <左对齐 ;>右对齐;^居中对齐
<宽度>
<.精度>浮点数的精度或者字符串最大输出长度
<类型>整数类型d/c/b/o/x/X;浮点数e/E/f/%;字符串s
1.填充,对齐方式,宽度一般一起使用。 对齐方式不能缺少 ,填充字符不填是默认为空格,宽度可以省略(省略了就没有意义了)
2.填充宽度小于实际宽度,显示实际宽度
3.千位符只能用在整数和浮点数;精度只能用在浮点数或字符串;用于浮点数时,如果没有设置类型,则显示科学计数法
4.类型一般需要与参数的类型匹配。参数为整数类型时,类型能用浮点数;其它不行
>>> print("{:>10}".format("hello"))#宽度为十,右对齐,填充空格
hello
>>> print("{:*^10}".format("hi"))
****hi****
>>> print("{:*<}".format("hi")) #宽度省略
hi
>>> print("{:*10}".format("hi")) #对齐方式省略
#报错>>> print("{:,}".format(1234567)) #千分符可以单独使用,适用于整数和浮点数
1,234,567
>>> print("{:.2f}".format(1234.567)) #设置浮点数精度,类型f必须写
1234.57 #四舍五入了
>>> print("{:.2}".format("hello")) #设置字符串最大输出长度
he
>>> print("{:b}".format(255)) #二进制
11111111
>>> print("{:c}".format(97)) #等同于chr函数
a
>>> print("{:o}".format(255)) #八进制
377
>>> print("{:x}".format(255)) #十六进制
ff
>>> print("{:X}".format(255)) #十六进制大写显示
FF
>>> print("{:e}".format(100345)) #整数科学计数法显示
1.003450e+05
>>> print("{:E}".format(100.3456789)) #浮点数科学计数法,且E大写
1.003457E+02
>>> print("{:%}".format(0.25)) #百分比表示
25.000000%
>>> print("{:2%}".format(0.25)) #百分比表示,且限制精度
25.00%10.字符串比较
>,>=,<,<= 只能用于同类型之间的比较(整数,浮点数,布尔值之间可以比较),否则有TypeError
==,!= 任何数据类型之间都可以比较, != 判断是否不相等(整数,浮点数,布尔值只要值相等,就认定为相等)
字符串之间的比较为逐个字符的比较,每个字符之间Unicode编码比较
服从小写字母>大写字符>数字
长度不一样的字符串,长的那个更大
一些函数
type函数
用于判断类型
temp=100
type(temp)赋值语句
有“=”的语句,同时给多个变量赋值叫做同步赋值语句,比如下面这个,当然我们可以同时赋值n个
<变量1>,<变量2>=<表达式1>,<表达式2>可以用于变量交换
a,b=b,ainput()函数
括号里可以写提示语句
不管输入了什么,返回值都会是 字符串
print()函数
用于在控制台输出
没有返回值(返回值是None)
打印结束后会默认换行符
打印多个数据对象的时候,sep参数可以修改空格符号,默认为空格,如sep=“#”
print(1,2,3,4,sep="#") #打印多个数据,修改了分隔符
for i in range(3): #循环打印三次,每次换行
print(i)
for i in range(3): #循环打印三次,每次不换行,结尾为#
print(i,end='#')eval()函数
以python表达式的方式解析并执行字符串
>>> eval("1.1+2.0")
3.1+将字符串拼接起来,各种意义上的连起来,比如“5”+“1*2”认为是51乘2
一个小tips:在文件夹里找到文件时,双击打开会显示程序,输入完运行会光速退出,所以右键进idle
更新日志
3824e-eleven于badf3-ten于4257c-tenth于830ad-sixth于744bb-fourth于1f533-third于194ea-new notes于
