Python程序基础:
1. 程序开发环境: PyCharm安装Community版即可
Anaconda
2. Python程序风格
保留两位小数
s = input("请输入数字:")
s = float(s)
if s >= 0:
s_result = str(s).split('.')
zhengshu = s_result[0]
xiaoshu = s_result[1][0:2]
print(zhengshu + "." + xiaoshu)
print("%.2f" % s)
print(round(s, 2))
else:
print("必须输入正数")
注释:
1. 单行注释 #
2. 多行注释 '''
数据类型:
常量:
1. 整数 int
2. 浮点数 float
3. 字符串 str
4. 逻辑常量 True/False
复杂的数据类型:
1. 列表
2. 元组
3. 字典
变量:
1. 存储单元中存储的数据可以在程序中改变
2. 变量命名规则:
不能数字开头,以英文字母、_、$
区分大小写
不宜过长,最好有含义
转换:
1. 数值转换字符串 str()
2. 字符串转换数值 int()、float()
3.整数格式化输出
%d
输出的一定是整数,如果实际值不是整数,会自动转换为整数
直接舍去末尾,不是四舍五入
%wd
w代表宽度width
如果w>0,右对齐如果w<0,左对齐如果w宽度小于整数所占的位数,则按实际整数输出
%0wd
宽度是w,如果w>0,右对齐;如果实际数据长度小于w,则左边用0填充
浮点数格式化输出:
%f
%w.pf
总宽度是w,小数位占p位(保留p位小数)
会四舍五入
字符串格式化输出:
%s
%ws
表达式:
关系运算
比较大小,是否等于:
!=
字符比较大小:
比较Unicode编码
空格<"0"<"1"<"9"<"A"<"Z"<"a"<…<"z"<"汉字"
逻辑运算
and —— 与
or —— 或
not —— 非
顺序:
关系运算优先于逻辑运算
a > b and c> d
程序语句:
条件语句:
if 条件:
语句1
else:
语句2
复杂条件语句:
if 条件1:
语句1
elif 条件2:
语句2
.......
else:
语句2
while循环条件语句:
1、循环变量初始化
2、循环条件
3、循环体
异常处理:
处理1:
try:
语句块1
except Exception as err:
语句块2
后续的语句
处理2:
raise
字符串:
1. 在内存中是字符数组的形式
2. 可以用s[索引]的形式获取对应字符
3. Unicode编码,每个英文字符用2个字节存储ord(字符):获取字符的编码
0<1<....<9<A<.....<Z<符号<a<....<z<汉字
4. 编码转字符:chr()
5. 字符串可以比较大小,比较的是unicode编码
6. 常用函数:
子串string[start:end:step]
转大小写
s.upper()
s.lower()
3. 字符串查找函数
find(t)
返回第一次出现位置的下标
rfind(t)
返回最后一次出现位置的下标
index(t)
返回第一次出现位置的下标
查找不到会报错,find不会
4. 字符串判断函数
startswith(t)
判断是否以t开始,返回逻辑值(True/False)
endswith(t)
判断是否以t结束,返回逻辑值(True/False)
5. 字符串去掉空格
lstrip()
去掉左边的空格
rstrip()
去掉右边的空格
strip()
去掉左边与右边的空格
6. 分离函数
split(分隔符)
列表:
1. 是基本数据结构
2. 数据项不需要具有相同的类型
list1 = ['语文','数学','英语','Python']
list2 = [1,2,3,4,5]
list3 = ['语文', 1, True]
3. 用下标索引的方式访问列表中的值
list1[下标的位置]
4. 更新列表
5. 删除列表
del语句
list1 = [1,2,3,4,5]
del list1[0]
6. 联合
+
7. 截取
list[start:end:step]
8. 判断一个元素是否在列表中
in
9. 常用操作函数
list.append(obj)
在列表末尾添加新对象
list.count(obj)
list.extend(seq)
一次性追加另一个序列中的多个值
list.index(obj)
从列表中找出某个值第一个匹配项的索引
list.insert(index,obj)
将对象插入列表
list.remove(obj)
移除列表中某个值的第一个匹配项
del list[index]
list.pop(index=-1)
默认弹出列表中最后一个元素
list.reverse()
反向列表中的元素
list.sort()
对原列表进行排序
元素必须是同类型,否则无法排序
元组:
tuple
使用圆括号(),eg: t = ('a', 'b', 'c')
元组的元素不能改变,只能读取
除了不能改变外,其他与列表完全一样
字典:
1. 格式:d = {key1:value1, key2 : value2}
2. 键必须唯一,值不必
键可以用数字、字符串或元组
3. 值可以取任何数据类型
4. 键不可变
5. d['age']=18
如果有age字段,则修改
如果无age字段,则新增
6. del d['键']
删除这个键
7. d.clear()
清空键值对,但是对象还存在
8. len(d)
9. d.keys()
10. d.get(key, default = None)
可以设置查询不到此key时的默认值
可以避免报KeyError
类于对象:
1. 类
2. 类对象
3. 实例对象
4. 实例方法
通过实例对象调用的方法
采用def关键字,在类定义的方法至少会有一个参数
一般以名为self的变量
class Person:
__name = "罗继成"
__age = 18
def getName(self):
return self.__name
def getAge(self):
return self.getAge()
p = Person()
print(p.getName())
5. 实例方法类方法、静态方法
class Person:
__name = "罗继成"
__age = 18
@staticmethod
def display():
print(Person.__name, Person.__age)
# 类方法
@classmethod
def show(cls):
print(cls.__name, cls.__age)
Person.show()
Person.display()
都使用Person类调用,只是Person.show()会把Person传递给def show(cls)的参数cls
Person.dislpay()不传递任何参数
例子:
class Person:
name = "xxx"
gender = "X"
age = 0
# 总结:对实例化以后的对象进行赋值,不会改变类.属性的值
p = Person()
# 能正常打印
print(p.name, p.gender, p.age)
print(Person.name, Person.gender, Person.age)
p.name = "史浩轩"
p.gender = "男"
p.age = 17
print(p.name, Person.name)
Person.name = "罗继成"
Person.gender = "女"
Person.age = 18
print("p.name", p.name)
print("Person.name", Person.name)
评论区