本篇文章是我的学习笔记,由于我有C与Java的基础,只记录了Python与Java不同的地方,内容写的很随意。如果你想从零学习Python,不要看。
另外,本文会一直更新,给出Pythonic写法。
一.变量
1.变量类型
| 整数 | int类型的数据范围没有上限,只要内存足够,可以存储特别大的数 |
| 浮点数 | 只有一种类型float,没有double,但是这个跟其他语言的double没什么区别 |
| 字符串 | 使用 ' ' 或者 " " 括起来的 |
| 布尔 | True和False |
补充:Python 将 Booleans 视为 Integer 数据类型的子类型,并且在几乎所有情况下,值的行为类似于值 0 和 1,除了当它们转换为它们的字符串表示形式时,将返回表达式 False 或 True。
2.动态类型
python的数据类型可以在运行时发生变化,也就是我们定义一个a,开始时a是int类型,后面可以变成float:
a=134
print(a)
a=123.123
print(a)
3.字符串处理
1)使用“.join”从列表元素创建单个字符串
list_str = ["apple", "banana", "cherry", "date", "elderberry"]
concat_string = ", ".join(list_str)
2)通过字符串函数的链式操作来提高代码的可读性
str_title = " Hello, World! "
formatted_title = (str_title.strip().strip(' ')
.upper()
.replace('!','.'))
3)使用格式化字符串构造字符串
name = 'KaKa'
age = 24
print(f'Name: {name}, Age: {age}')
4)使用 ord 和 chr 处理 ASCII 代码
内置函数 ord 和 chr 用于执行字符与其 ASCII 字符代码表示之间的转换
print(ord('a')) # output: 97
print(chr(97)) # output: 'a'
二.输入输出
1.输入
使用input函数输入:
b=input()
c=input("输入一个整数:")
input 的参数相当于一个 "提示信息",不写也可以。
注意:input 的返回值是字符串类型,如果后续要操作,要强转类型。
2.输出
使用print函数输出,输出可以是变量,也可以是格式化字符串
print(a)
三.运算符
1.算数运算符
1)整数/整数不会截断,比如1/2不是等于0,而是等于0.5;
2)**可以用来算乘方,2 ** 2,2**0.5,都可以;
3)//是取整除法,得到的是整数,会向下取整,比如:7 // 2=3,-7 // 2=-4;
2.关系运算符
整数和浮点数不用说,这里说一下字符串。
==和!=可以判断两个字符串的是否相等,是否不相等。
>,<等可以根据字符串字典序比较大小。
但是要注意==不可以判断浮点数是否相等。
3.逻辑运算符
| and | 与 |
| or | 或 |
| not | 取反 |
4.赋值运算符
# 连续赋值
a=b=10
# 多元赋值
a,b=10,12
# 两个变量交换
a,b=b,a
注意python中没有++,--这种运算符。
四.条件语句
# if
if expression:
print(123)
# if-else
if expression:
print(123)
else:
print(456)
# if-elif-else
if expression:
pass # 可以使用pass占一个位置
elif expression2: # 注意这里是elif
print(456)
else:
print(789)
五.循环语句
1)while
while num <= 5:
num += 1
2)for
基本语法:
for 循环变量 in 可迭代对象:
循环体
举个例子,打印1-10:
for i in range(1,11):
print(i)
使用range函数可以生成[1,11)
打印2,4,6,8,10:
for i in range(2,12,2): # range后面还可以规定每次递增的大小
print(i)
还可以使用 enumerate() 函数来遍历数组:
index 是下标,element 是 index下标对应的元素
for index, element in enumerate(arr):
print index, element
使用 pairwise() 函数将一个可迭代对象中的元素按顺序两两配对。简单来说,它能把[a,b,c,d]转换成 (a,b),(b,c),(c,d) 这种两两相邻的配对形式。
# 1. 列表示例
nums = [1, 2, 3, 4, 5]
pairs = pairwise(nums)
# 转换为列表查看结果(迭代器需要遍历/转换才能看到内容)
print(list(pairs)) # 输出: [(1, 2), (2, 3), (3, 4), (4, 5)]
# 2. 字符串示例
s = "abcd"
print(list(pairwise(s))) # 输出: [('a', 'b'), ('b', 'c'), ('c', 'd')]
# 3. 元组示例
t = (10, 20, 30)
print(list(pairwise(t))) # 输出: [(10, 20), (20, 30)]
# 4. 特殊情况:可迭代对象长度 < 2 时,返回空迭代器
short_list = [1]
print(list(pairwise(short_list))) # 输出: []
3)for...else
基本语法:
for 变量 in 可迭代对象:
循环体代码
[if 条件:
break] # 可选的break,触发则else不执行
else:
# 循环正常结束(未被break中断)时执行的代码
else块代码
核心逻辑:
| for 循环完整遍历完所有元素 → 执行 else 块 |
| for 循环被 break 提前终止 → 跳过 else 块 |
| else 块与 for 是一个整体,不是 与 if 配对 |
有时候写代码的时候我会定义几个标志位,表示这个循环被中断了。现在不用了,直接使用只用这个就行了。
注意:if/while/for内定义变量,在其外部也能使用,这个和其他语言是不一样的。
六.函数
1)语法格式
def test():
return 123
def test(a):
return a
函数要先定义再使用。
2)参数
参数不用定义类型,动态类型,传什么是什么。
可以个参数设定一个默认值,在没有传这个参数的时候就使用这个参数:
def test(a,b,c=True):
if c:
print(a)
else:
print(b)
可以通过关键词参数来指定传递,这样就算不按照顺序来也行:
def test(a,b):
print(a)
print(b)
test(b=1,a=2)
3)返回值
这个nb了,可以一下返回多个值:
def test():
x=1
y=2
return x,y
这个可以说是我梦寐以求的功能。
如果只想要其中某个返回值,在接收的时候可以使用_跳过,详细见List(列表)和 Tuple(元组)这篇文章。
如果是想在函数内部,修改全局变量的值,需要使用 global 关键字声明,如果不用这个变量就会被当作函数内的局部变量,无法更改全局变量的值。
七.文件操作
1)打开 和 关闭 文件
# 打开文件
f=open("C:/code/test.txt","r")
# 第一个参数是要打开的文件的路径
# 第二个参数是打开方式,r是读的方式,w是写的方式,a是追加写的方式
# 关闭文件
f.close()
一个程序能同时打开的文件数量是有上限的
2)写文件
f=open("C:/code/test.txt","w")
f.write("Hello World")
f.close()

这里要注意,如果我们在打开文件的时候第二个参数选择w,那么我们在下次再打开这个文件的时候,文件的内容会被清除。
如果我们不想清楚,要使用a(追加写)。
3)读文件
f=open("C:/code/test.txt","r")
# 从文件中读两个字符
result=f.read(2)
print(result)
f.close()
readlines可以将整个文件读出来,返回的结果是一个列表,每一行是一个元素:
f=open("C:/code/test.txt","r")
result=f.readlines()
print(result)
f.close()
如果我们在本地的文本文件写中文读取时可能会出现乱码的情况,整个时候我们可以指定字符集:
f=open("C:/code/test.txt","r",encoding='utf8')
result=f.readlines()
print(result)
f.close()
如果容易忘记关闭文件怎么办?Python提供了上下文管理器,我们使用with打开文件,当with内部代码执行完后会自动调用关闭方法:
with open("C:/code/test.txt","r",encoding='utf8') as f:
result=f.readlines()
print(result)

3408

被折叠的 条评论
为什么被折叠?



