字符与ASCII码转换
a~z A~Z 0~9
他们在
ASCII
中的编号都是连续的
ord()
:获取字符对应的
ASCII
码编号
>>> ord('a')
97
>>> ord('A')
65
>>> ord('0')
48
chr()
:根据给定的
ASCII
码编号获取对应的字符
>>> chr(98)
'b'
>>> chr(57)
'9'
A = 10 B = 11 … F = 15
13 = D
chr(ord(‘A’) + 13 - 10)
常见的数学计算
>>> abs(3.14) # 取绝对值
3.14
>>> abs(-3.14)
3.14
>>> pow(2, 4) # 求a 的 b 次幂
16
>>> pow(2.0, 4)
16.0
>>> pow(16, 0.5)
4.0
>>> max(1, 2, 3, 4) # 求最值问题
4
>>> min(1,2,3,4)
1
>>> round(3.14) #四舍五入
3
>>> round(3.51)
4
六、输入与输出
input()函数
#num = int(input("请输入一个数字:"))
num = eval(input("请输入一个数字:"))
# input()默认输入的是一个字符串(整行)
print(num + 1)
"""
TypeError: can only concatenate str (not "int") to str
反向证明输入的是字符串
ValueError: invalid literal for int() with base 10: '123 456'
"""
# 处理一行内多个数据的输入
# eval处理的数据必须要有逗号分隔
# eval自动处理字符串解析
# eval既可以处理单值 也可以处理多值
"""
请输入两个数字:123,456
579
"""
num1, num2 = eval(input("请输入两个数字:"))
print(num1 + num2)
"""
这是最常见的方式,适用于输入的数据之间由某个分隔符(如空格、逗号、制表符等)隔开的情况。
用户在一行内输入所有数据,程序通过 input() 获取整个字符串,
再使用 split() 方法将字符串按指定分隔符切割成一个列表。
"""
numbers_str = input("请输入一组用空格分隔的整数:")
numbers = list(map(int, numbers_str.split()))
print()函数
print("Hello World")
print(1 + 2 + 3)
print(1, 2, 3, "Hello World!") # 多数据输出 用空格分隔
print(1, 2, 3, sep = "#") # sep默认空格
print(1, 2, 3, end = "!!!") # end输出的解围 默认"\n"
# print(*args, sep=' ', end='\n', file=None, flush=False)
print(1, 2, 3, end = "!!!")
print("Hello World", end = "!!!")
print("Hello World", end = "!!!")
print() # 单独一个print换行的意思 其实打印的是空串
# 格式化输出
name = "旺财"
age = 18
height = 1.23
print("它叫", name, ",今年", age, "岁", sep = "")
# %s 对应字符串 %d 对应整数 %f 对应小数
print("它叫%s,今年%d岁,身高%.2f米" % (name, age, height))
七、运算符
算数运算符
- 加法:数值相加,序列拼接
>>> 1 + 2
3
>>> "123" + "456"
'123456'
- 减法:数值相减
- 乘法:数值相乘,序列增倍
>>> 3 * 6
18
>>> "我爱你" * 3
'我爱你我爱你我爱你'
- 除法:小数除 /,整数除 //
整数除 只要两边都是整数 结果一律为整数 但凡有一个小数 结果就是小数(只有整数位,小数位都为0)
>>> 10 / 2
5.0
>>> 10 // 2
5
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3
>>> 10.0 // 3
3.0
>>> 10.5 // 3
3.0
- 幂运算
>>> 2 ** 3
8
>>> 16 ** 0.5
4.0
- 取余:10 / 3 = 3 ~ 1
>>> 10 % 3
1
取余经常用于哪些场景,带有数据重复或循环的情况
- 22日对应周五,22 % 7 = 1 余数为1 则对应周五 0 对应周四…
- 30 % 7 = 2 对应周六
布尔判断运算符
运算结果一律为布尔值
< >= <= != ==
Python允许连续比较
>>> 1 < 2 < 3
True
>>> 1 < 2 and 2 < 3
True
在
Python
当中
到底比得是啥?
比的是具体对象的值
>>> a = 1
>>> b = 1
>>> id(a) # id 取变量中存储的数据对象在内存中的地址
140715464473016
>>> id(b)
140715464473016
>>> a = 1000
>>> b = 1000
>>> id(a)
3267440575376
>>> id(b)
3267440589968
"""
可以发现a和b在为1000时 对象地址不一样?
因为在Python当中 只有-5~256 Python会自动创建这些数据对象,提供给调用者使用
也就意味着如果创建该范围之外的数据对象的话,Python则重新创建新的对象出来
a = 1000, b = 1000 其实是两个1000数据的对象
a == b 比的是对象的内容 但是a和b存的地址不一样
a = 1, b = 1, 其实只有一个 1 数据的对象
a == b 比的是对象的内容 但是a和b存的地址一样
"""
增强型赋值运算符
+= -= *= /= //= **= %=
a += 2
a = a + 2
b **= 2
b = b ** 2
在
Python
中 是不存在
++ –
这种自增运算符的!
int i = 1;
i++;
System.out.println(i);//2
System.out.println(i++);//2
int j = i++;
System.out.println(i);//4
System.out.println(j);//3
i = i++;
System.out.println(i);//4
i = i++;
System.out.println(i);//4
i++
流程
开辟临时存储区
将
i
的值复制到临时存储区内
i
自身
+1临时存储区的值等待被调用(输出 赋值 参与运算)
System.out.println(x++ + ++x + ++x + x++); // 12
System.out.println(x); // 5
逻辑运算符
与 或 非
= and or not
(
&& || !
)
与:全真则真 有假则假
或:有真则真 全假则假
非:取反
>>> 1 < 2 and 2 < 3
True
>>> 1 < 2 or 2 > 3
True
>>> not 1 < 2
False
&
与
&&
的区别int x = 0;
int y = 0;
System.out.println(x++ < 0 & y ++ < 0); //
无论左边是否为假 右边都要计算System.out.println(x); //1
System.out.println(y); //1
int x = 0;
int y = 0;
System.out.println(x++ < 0 && y ++ < 0); //
如果左边是假 右边不计算System.out.println(x); //1
System.out.println(y); //0
&&
就是为了避免一些没有必要的计算 提高效率
位运算符
&按位与
>>> 13 & 7
5
1101
0111
0101 = 5
|按位或
>>> 13 | 7
15
1101
0111
1111 = 15
>> 右移
>>> 16 >> 2
10000
100|00
100 = 4
16 / 2 ^ 2
<< 左移
>>> 2 << 3
16
0010
0010000
10000 = 16
2 * 2 ^ 3
~取反 符号取反再减1
>>> ~15
-16
01111 = 15
10000 = -16
^ 异或:相等为假 不同为真
>>> 13 ^ 7
10
1101
0111
1010 = 10
关于变量交换值
a = 1
b = 3
temp = a
a = b
b = temp
a, b = b, a # Python自带的交换特点
只针对整数
a = 10
b = 100
a = a + b # 110
b = a - b # 10
a = a - b # 100
只针对整数
a = a ^ b
b = a ^ b
a = a ^ b
成员运算符
in
和
not in
判断一个元素是否在另一个序列中
>>> "abc" in "sakjdgjhsgadugashjdvasvdjgsa"
False
>>> "abc" in "sakjdgabca"
True
>>> 1 in [2,3,4]
False
从属**/**身份运算符
is
和
not is
判断两个变量指向的对象是否是同一个对象(比地址)
>>> a = 1
>>> b = 1
>>> a == b
True
>>> a is b
True
>>> a == 1000
False
>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b
False
>>> a = "abc" # 字符串
>>> b = "abc" # 之前已经创建了"abc" 这里直接复用 而不是重新创建 跟整数是有区别的
>>> a == b
True
>>> a is b
True
>>> id(a)
140715463387184
>>> id(b)
140715463387184
八、条件判断
只有
if-else
语句,
Python
不支持
switch
语句
if condition:
# 如果条件为真,则执行这里的代码块
# 这里可以是一行代码或多行代码
elif another_condition:
# 如果第一个条件不满足,但第二个条件为真,则执行这里的代码块
# 可以有零个或多个elif部分
else:
# 如果以上条件都不满足,则执行这里的代码块
# else部分是可选的
#示例
x = 10
if x > 0:
print("x is positive")
elif x == 0:
print("x is zero")
else:
print("x is negative")
#在这个示例中,如果x大于0,则打印“x is positive”,如果x等于0,则打印“x is zero”,否则打印“x is negative”。
#除了基本的条件判断外,Python还支持使用逻辑运算符(如and、or、not)来组合条件。例如:
x = 5
y = 10
if x > 0 and y > 0:
print("Both x and y are positive")
if x > 0 or y > 0:
print("At least one of x and y is positive")
if not x == 0:
print("x is not zero")
九、循环语句
主要解决什么样的问题:具有重复性、规律性的问题
向前走
10
步:有明显的循环次数的
- for
向前走,直到碰墙为止:没有明显的循环次数的,但是有结束条件
- while
循环四要素:
- 循环的开始(从第1步开始;从第1步开始/从起点开始)
- 循环的继续条件(还没走到第10步;没有碰到墙/就是看距离)
- 循环体(走的每一步;走的每一步)
- 循环的步长/间隔/周期/进度(步数的统计;距离的统计)
//打印1~100
for (①int i = 1; ②i <= 100; ④i++) {
③System.out.println(i);
}
①->②->③->④->②->③->④->②->③->④->②不满足为止
int i = 1;
for (;i <= 100;) {
System.out.println(i);
i++;
}
==>
int i = 1;
while (i <= 100) {
System.out.println(i);
i++;
}
for i in range(11):
print(i)
"""
range(n) : 取值范围是[0,n) 步长默认为1
0 1 2 3 4 5 6 7 8 9 10
i
循环的开始:0
循环的继续条件:i < n
循环体:print(i)
循环的步长:步长默认为1
"""
for i in range(2, 10):
print(i)
"""
range(a, b):取值范围[a, b) 步长默认1
"""
for i in range(2, 13, 2):
print(i)
"""
range(a, b, c):取值范围[a, b) 步长默认2
"""
print("="*12)
for i in range(100, 1):
print(i)
for i in range(100, 10, -10):
print(i)
"""
range(a,b,c)
如果c > 0, a < b 才是有效范围 递增
如果c < 0, a > b 才是有效范围 递减
"""
# 特殊的 结合序列去使用 遍历序列中每一个元素
for i in "abcdefg":
print(i)
"""
******
******
******
******
******
"""
for i in range(5):
print("******")
print("=" * 10)
for i in range(5):
for j in range(6):
print("*", end = "")
print()
print("=" * 10)
"""
*
**
***
****
*****
******
"""
for n in range(6):
for i in range(n):
print("*", end = "")
print()
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-bpE4cIMe-1713760572621)]
[外链图片转存中…(img-HJtcrOCj-1713760572622)]
[外链图片转存中…(img-MAbkdLaB-1713760572623)]
[外链图片转存中…(img-9A6N5Rwd-1713760572623)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)