python2:数据、运算符与表达式
一,数据类型:
数据类型是计算机对现实中数据的抽象,不同的数据类型其存储格式、数据范围、
计算要求都各不相同。
Python中的数据类型可以分为以下三类
基础类型:字符串(str)、整数(int)、实数(float)、布尔(bool)、复数(complex)
扩展类型:列表(list)、元组(tuple)、字典(dict)、集合(set)
自定义类型:类(class)
1,字符串类型:
处理文本数据,或者是序列数据,我常用str及字符串对象处理;
单引号字符和双引号字符一般嵌套使用;
三引号的字符成对出现连用,主要是用于注释
2,转义字符
3,整数类型:
# 十进制整数
decimal_number = 101
# 八进制整数
octal_number = 0o101 # 等价于十进制的65
# 十六进制整数
hexadecimal_number = 0x101 # 等价于十进制的257
# 二进制整数
binary_number = 0b101 # 等价于十进制的5
4,实数类型:
5,布尔类型:
6,复数类型:
科学计算见我后续博客的numpy章节
二,变量与赋值
1,变量与标识符:
1个变量的3个基本属性:a=10,对应 名字=值(值一旦给出就包含了类型),所以给出3属性的过程实际上就是定义的过程。
有些学生经常把赋值(=)和判断相等()搞混,我让他们不要过度依赖于vscode中的checker插件,就是这么来区分:
你定义一个最基础变量的时候是赋值,用的句式就是a=10,而不是a10,所以=
是赋值,==是判断相等
2,关键词:
import keyword
print(keyword.kwlist)
#['False', 'None', 'True', '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']
3,标识符:其实就是变量名
4,赋值和动态类型:
5,赋值操作的本质
变量是虚的,只有实际的数据类型对象(比如说整数、字符串等定义时候在右边的值)是实的,python只是为在右边的值在内存中开了空间、存放进去对象,然后左边的变量实际上只是指向了这个值的地址(可以简单的理解为变量也有一个内存空间,里面放的是一个指针,指针内容指向其对应的值)
我们对python变量的定义是什么:名字=值(暗示类型)
无论是定义还是二次修改定义,实际上只是修改这个变量中存放的指针内容,不断的修改其对应的内存对象指向
6,强类型语言:
三,运算符与表达式:
1,运算符和表达式:
操作数和操作符(运算符)构成了表达式
2,运算符分类:
(1)算术运算符:
学生经常容易搞混的就是除号、地板除以及求余,
1个简单的例子,只要能口述清楚下面这个例子的值,基本上就搞清楚了
print(5 / 2, 5 // 2, 5 % 2)
print(5 * 2, 5 ** 2)
print(5 / 2.0, 5 // 2.0, 5 % 2.0)
print(5 * 2.0, 5 ** 2.0)
print(5 / -2, 5 // -2, 5 % -2)
print(-5 / -2, -5 // -2, -5 % -2)
print(-5 / 2, -5 // 2, -5 % 2)
除号(简单除法、地板除)、取余最常见的考法就是拆分一个多位数的每位,颠来倒去考
x = 123
a = x // 100 #对100地板除
b = x // 10 % 10 #对10地板除再对10取余
c = x % 10 #对10取余
y = c * 100 + b * 10 + a
print(y)
当然后面教了函数,就可以使用递归函数处理,实际上就是经典的整数倒序问题。
递归函数编写实际上就2个要点:
首先判断递归终止条件(什么时候不调用递归函数,即什么时候终止)
不终止就继续展开递归(也就是调用自身,但是要体现出“展开”的思维,实际上就是将原问题化为和原问题形式相似但规模更小得问题,也就是分解)
def back_order(n):
#首先需要判断递归终止的条件,也就是最后一次取余得到0的时候(一般写法上就是判断 if n是否不递归终止)
if n>0:
print(n%10,end="") #打印对10取余
back_order(n//10) #递归对10地板除
back_order(123)
print("\n")
back_order(7898230)
print(round(3.1415926, 2)) # 四舍五入函数,保留2位小数
print(divmod(7, 2)) # 返回商和余数,div和mod,返回的是元祖
print(type(divmod(7,2)))
print(abs(-2)) # 返回绝对值
print(pow(2, 3)) # 幂运算
print(max(3, 1, 2)) # 最大值
print(min(3, 1, 2)) # 最小值
print(sum((3, 1, 2))) # 总和,注意参数格式,是2个括号,
# print(sum(3,1,2)) 格式错误,sum() takes at most 2 arguments (3 given)
import math
print(dir(math)) # 列出模块所有的功能和数据,同理print(dir(numpy),dir(pandas))
print(math.sin(math.pi / 2)) #模块.函数(参数)
print(math.ceil(3.5)) # 向上取整
(2)关系运算符:
ord函数和chr函数互逆
(3)逻辑运算符
是4的倍数但不是100的倍数,或者是400的倍数
(4)成员运算符:
(5)身份运算符:
此处联想变量赋值的实质,是将变量指向值的内存地址
3,类型转换:
可以类比R中的函数as.numeric()等
如果要参与运算需要使用数据类型转换
4,短路逻辑运算:
输入字符就是1,1 or “x”就是1也就是用户名字符
不输入就是“”空(0),0 or “x”就是x也就是匿名用户
不输入就是:
三,python代码规范:
1,注释:
2,缩进:tab
3,续行:
基本同shell
4,一行多语句:
5,格式化:
如何一次获得多个数据的输入:
#单个输入
x=float(input(''))
#多个输入,对输入内容进行切割(空格切割),使用map循环使用float
x, y = map(float, input('').split())
6,python简单格式化输出
再过一遍基础题库巩固:
https://www.luogu.com.cn/training/100#problems
原文地址:https://blog.csdn.net/weixin_62528784/article/details/144705158
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!