基础语法类(1-20)
计算圆的面积(半径为5)
python
import math
radius = 5
area = math.pi * radius ** 2
print(area)#78.53981633974483
# math.pi:提供精确的圆周率值,比手动输入 3.14 更准确
# 指数运算符:** 表示幂运算,radius ** 2 就是 radius²
# 模块使用:通过 math. 前缀来访问模块中的常量和函数
将字符串转换为大写
python
s = "hello"
print(s.upper())
将列表中的元素用逗号连接成字符串
python
lst = ["a", "b", "c"]
print(",".join(lst))#a,b,c
将字符串反转
python
s = "Python"
print(s[::-1])#nohtyP
检查字符串是否以特定子串结尾
python
s = "Python"
print(s.endswith("on"))
条件语句类(21-30)
检查字符串是否是回文("madam")
python
s = "madam"
if s == s[::-1]:
print("是回文")
检查数字是否是2的幂(8)
python
num = 8
if num > 0 and (num & (num - 1)) == 0:
print("是2的幂")
python
1000 (8)
& 0111 (7)
-----------
0000 (0)
2的幂的二进制特点:
2的幂在二进制中只有1个位是1,其他都是0
例如:
1 = 0001
2 = 0010
4 = 0100
8 = 1000
16 = 10000
当执行 num & (num - 1) 时:
num - 1 会把最低位的1变成0,后面的所有0变成1
这样两个数在二进制表示中没有任何相同的1位
按位与的结果必然是0
关键点总结
二进制特性:2的幂在二进制中只有一个1
按位与操作:& 运算符比较两个数的二进制位
高效算法:这个方法的时间复杂度是O(1),非常高效
这是一个经典的位运算技巧,在算法竞赛和系统编程中经常使用
num - 1 会把最低位的1变成0,后面的所有0变成1 解释这句:
python
num = 8 = 1000#最低位的1从右数到左第4个就是1
num - 1 = 7 = 0111
python
num = 12 = 1100#最低位的1从右数到左第3个就是1
num - 1 = 11 = 1011
循环类(31-40)
打印九九乘法表
python
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}x{i}={i*j}", end="\t")
print()
打印斐波那契数列前10项
python
a, b = 0, 1
for _ in range(10):
print(a, end=" ")
a, b = b, a + b
0 1 1 2 3 5 8 13 21 34
备注:
第1次循环:
print(a, end=" ") # 输出:0
a, b = b, a + b # a = 1, b = 0 + 1 = 1
第2次循环:
print(a, end=" ") # 输出:1
a, b = b, a + b # a = 1, b = 1 + 1 = 2
a, b = b, a + b 这行代码的妙处在于:
先计算右边的所有值:b 和 a + b
然后同时赋值给左边的变量
不会出现先用新值覆盖a,再用新a计算b的问题
在Python中,_ 是一个有效的变量名,但它有一个特殊的约定:当你不关心这个变量的具体值时,就用 _ 来命名
使用有意义的变量名(当你关心值时)
for i in range(3):
print(f"这是第 {i+1} 次循环")
这是第 1 次循环
这是第 2 次循环
这是第 3 次循环
使用 _(当你不关心值时)
python
for _ in range(3):
print("Hello")
Hello
Hello
Hello
这里我们只关心循环3次,不关心当前是第几次
Python并行赋值介绍
a, b, c = 1, 2, 3
python
# 传统方法需要临时变量
a = 1
b = 2
temp = a
a = b
b = temp
print(a, b) # 2 1
# 并行赋值方法
a, b = 1, 2
a, b = b, a # 一行搞定!
print(a, b) # 2 1
并行赋值的工作原理
关键机制:先计算右边,再赋值
python
a, b = 1, 2
a, b = b, a + b
计算阶乘(5)
python
n = 5
fact = 1
for i in range(1, n+1):
fact *= i
print(fact)#120
5! = 1 × 2 × 3 × 4 × 5 = 120
打印倒三角形图案
python
n = 5
for i in range(n, 0, -1):
print("*" * i)
字符串处理类(41-50)
统计字符串中字母个数
python
s = "Python3.8"
count = sum(c.isalpha() for c in s)
print(count)
反转字符串中的单词顺序
python
s = "Hello World"
print(" ".join(s.split()[::-1]))#World Hello
统计字符串中单词个数
python
s = "Hello World Python"
print(len(s.split()))
统计字符串中特定字符出现的次数("hello", 'l')
python
s = "hello"
print(s.count('l'))
将字符串按空格分割成列表
python
s = "Hello World Python"
print(s.split())
检查字符串是否是回文忽略大小写("Madam"
python
s = "Madam"
print(s.lower() == s.lower()[::-1])
列表操作类(51-60)
反转列表
python
lst = [1, 2, 3, 4, 5]
print(lst[::-1])
删除列表中的重复元素
python
lst = [1, 2, 2, 3, 4, 4, 5]
print(list(set(lst)))
在列表指定位置插入元素
python
lst = [1, 2, 4]
lst.insert(2, 3)
print(lst)
找出两个列表的交集
python
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
print(list(set(list1) & set(list2)))
计算数字的阶乘(递归实现)
python
def factorial(n):
return 1 if n <= 1 else n * factorial(n-1)
print(factorial(5))