Python 中的注释方法
1. 单行注释
使用 # ,则 Python 解释器不会解释当前行
print("随机数:", round(random.random() * 100)) # 获取 1~100 的随机数
2. 多行注释
方法一:“”“xxx”“”
方法二:‘’‘xxx’‘’
"""
print("随机数:", round(random.random() * 100))
print("当前时间:", datetime.datetime.now().strftime("%Y-%m-%d %X"))
"""
'''
print("随机数:", round(random.random() * 100))
print("当前时间:", datetime.datetime.now().strftime("%Y-%m-%d %X"))
'''
print("Hello Python")
Pep8 规范
PyCharm 自动格式化:Ctrl + Alt + L
变量
快捷键:Ctrl + D
作用:将当前行复制到下一行
快捷键:Ctrl + /
作用:将选中行注释掉
1. 变量的多次使用
# 执行完后被垃圾回收
print(1 + 2)
print(1 - 2)
# 使用变量则不会被垃圾回收 还可以反复使用
x = 1
y = 2
print(x + y)
print(x - y)
直接使用常数计算,计算结束后,Python 解释器会把没有变量引用的数据进行垃圾回收。这样每次计算都要在内存中开辟空间,计算,回收,开销很大;
而使用变量则可以进行存储,变量可以被反复使用,不会被垃圾回收。
2. 变量的修改
x = 10 # 会被垃圾回收
print(x)
x = 20
print(x)
相当于内存中新开辟一个空间为 20,变量 x 指向这个新的空间,之前的 10 由于没有被变量引用,会被垃圾回收。
3. 变量的命名规范
命名要做到见名知意:
-
下划线分隔
-
小驼峰命名
my_first_name = "沈"
mySecondName = "Shen"
基本数据类型
1. 整型和浮点型
整型:int
浮点型:float
使用内置函数 type() 可以返回数据的类型,但是需要结合内置函数 print() 才能打印出来
x = 10
y = 3.14159
print(type(x))
print(type(y))
# 输出结果:
<class 'int'>
<class 'float'>
2. 布尔类型
布尔类型:bool
用于表示真、假两种状态,主要用作条件判断
关键字:
真 – True
假 – False
x = 10
y = 3.14159
print(x > y)
print(x <= y)
print(type(x > y))
# 输出结果:
True
False
<class 'bool'>
布尔类型也可以直接赋值给变量
a = True
b = False
print(a, b)
print(type(a))
# 输出结果:
True False
<class 'bool'>
所有数据类型都有自己的布尔值
零值:所有数据类型中都有且只有一个值的 bool 状态是 False,该值称为此类型的零值。
整型、浮点型零值:0
字符串零值:“”
列表零值:[]
字典零值:{}
print(2 == 1) # 表面
print(bool(2 == 1)) # 实际
print(bool(0)) # 整型零值
print(bool(0.0)) # 浮点型零值
print(bool("")) # 空字符串
print(bool([])) # 空列表
print(bool({})) # 空字典
# 输出结果:
False
False
False
False
False
False
False
3. 字符串类型
3.1 字符串的创建
Python 中字符串可以使用单引号、双引号、三引号表示
str1 = "Hello 沈" # 双引号可以
str2 = '嘉 Jarvis' # 单引号也可以
str3 = """
没想到吧
三引号也行
本质上是一个字符串
如果不赋值给变量,就是注释
如果赋值给变量,就是字符串
"""
print(str1)
print(str2)
print(str3)
# 输出结果:
Hello 沈
嘉 Jarvis
没想到吧
三引号也行
本质上是一个字符串
如果不赋值给变量,就是注释
如果赋值给变量,就是字符串
3.2 字符串中的转义符
转义字符的作用:
-
将某些普通符号给予特殊的功能
-
将一些特殊功能的符号普通化
‘\n’ 表示换行
# 将某些普通符号给予特殊的功能
print("I am a Student\nMy age is 21")
# 输出结果:
I am a Student
My age is 21
‘\t’ 表示 Tab 即制表符
# 将某些普通符号给予特殊的功能
print("I am a Student\tMy age is 21")
# 输出结果:
I am a Student My age is 21
‘\r’ 表示回车,光标回到当前行最左边,\r 后面的内容会覆盖当前行的内容
# 将某些普通符号给予特殊的功能
print("I am a Student\rHello")
# 输出结果:
Hello
将一些特殊功能的符号普通化
# 将一些特殊功能的符号普通化
print('Let\'s go')
print("\"Man!\"")
print("F:\\Code\\Python\\Python基础学习\\基本语法\\test1.py")
# 输出结果:
Let's go
"Man!"
F:\Code\Python\Python基础学习\基本语法\test1.py
3.3 字符串的格式化输出
方式一:使用占位符(比较古老)
name = "Jarvis"
age = 21
gender = "male"
print("Name:%s\nAge:%d\nGender:%s" % (name, age, gender))
# 输出结果:
Name:Jarvis
Age:21
Gender:male
方式二:format 格式化(推荐,3.6版本编译器之后才有)
name = "Jarvis"
age = 21
gender = "male"
print(f"Name:{name}\nAge:{age}\nGender:{gender}")
# 输出结果:
Name:Jarvis
Age:21
Gender:male
3.4 字符串序列的操作
3.4.1 索引操作
# 索引 查询单个字符
str1 = "Hello Python"
print(str1[6], str1[7], str1[8], str1[-3], str1[-2], str1[-1])
# 输出结果:
P y t h o n
3.4.2 切片操作
特点:包头不包尾
str1 = "Hello Python"
# 包头不包尾
print(str1[0:4])
print(str1[0:5])
print(str1[-12:-7])
# 缺省状态
print(str1[6:]) # 表示从 6 索引处一直取到结尾
print(str1[:5]) # 表示从开头一直取到 5 索引处
print(str1[:]) # 切取全部字符串
# 输出结果:
Hell
Hello
Hello
Python
Hello
Hello Python
注意:切片默认是从左往右切,第一个参数是切片的左边界,第二个参数是切片的右边界。
切片的步长:
步长为正时,表示在选定的范围内从左往右每隔 (step - 1)个字符取一个
str2 = "0123456789ABCDEF"
# 步长为正 表示从左往右切
# [start : end : step]
# 表示在选定的范围内 从左往右 每隔 (step - 1) 个字符取一个
print(str2[3:8:1])
print(str2[2:13:2])
print(str2[::3])
# 输出结果:
34567
2468AC
0369CF
步长为负时,表示选定的范围内从右往左每隔 (step - 1)个字符取一个
str2 = "0123456789ABCDEF"
# 步长为负 表示从右往左切
# [start : end : step]
# 表示在选定的范围内 从右往左 每隔 (|step| - 1) 个字符取一个
print(str2[6:1:-1])
print(str2[14:2:-2])
print(str2[::-3])
# 输出结果:
65432
ECA864
FC9630
注意:
- 步长为正时,必须满足 start < end,否则不会打印出任何结果;
- 步长为负时,必须满足 start > end,否则不会打印出任何结果;
3.4.3 字符串的拼接
‘+’ 实现字符串的拼接
# 字符串的拼接
str3 = "Counting"
str4 = "Stars"
print(str3 + str4)
# 输出结果:
CountingStars
‘*****’ 实现字符串的拼接
print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
print("a" * 30)
# 输出结果:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3.4.4 计算字符串对象的长度
使用 Python 解释器的内置函数 len() 可以返回字符串中的元素个数
str5 = "CountingStars"
str6 = "某人"
print(len(str5))
print(len(str6))
# 输出结果:
13
2
3.4.5 针对容器类型:判断某个成员是否存在
使用 in 关键字进行判断:
str5 = "CountingStars"
print("Star" in str5)
print("stars" in str5)
print("ting" in str5)
# 输出结果:
True
False
True
3.5 输入输出函数
使用 input() 函数实现输入
# input
name = input("请输入姓名: ")
age = input("请输入年龄: ")
print(f"姓名: {name} 年龄: {age}")
print(type(age))
# 输入:
请输入姓名: Jarvis
请输入年龄: 21
# 输出:
姓名: Jarvis 年龄: 21
<class 'str'>
注意:input() 函数会把输入的内容转化为字符串类型,再传递给变量
num1 = input("Number1: ")
num2 = input("Number2: ")
print(type(num1), type(num2), num1 + num2)
print(type(int(num1)), type(int(num2)), int(num1) + int(num2))
# 输入:
Number1: 100
Number2: 200
# 输出结果:
<class 'str'> <class 'str'> 100200
<class 'int'> <class 'int'> 300
如果想要通过 input() 输入数据进行计算,需要进行强制类型转换。
使用 print() 函数进行输出
print() 函数源码:点击 print() 然后 Ctrl + B 进入
其中,sep=’ ’ 表示在 print 函数中,如果有多个参数,默认以空格进行分隔:
name = "Jarvis"
age = 21
ID = 2021216432
print(name, age, ID)
# 输出:
Jarvis 21 2021216432
也可以对这些参数进行修改,例如,可以修改为 sep= ‘,’
name = "Jarvis"
age = 21
ID = 2021216432
print(name, age, ID, sep=',')
# 输出:
Jarvis,21,2021216432
3.6 字符串的内置方法
方法 | 作用 | 示例 | 输出 |
---|---|---|---|
upper | 全部大写 | “Hello”.upper() | “HELLO” |
lower | 全部小写 | “Hello”.lower() | “hello” |
startswith() | 是否以 a 开头 | “张三”.startswith(“张”) | TRUE |
endswith() | 是否以 a 结尾 | “meinv.png”.endswith(“.jpg”) | FALSE |
isdigit() | 是否全数字 | ‘123’.isdigit() | TRUE |
strip() | 去除两边空格或换行符 | " hi yuan \n".strip() | “hi yuan” |
join() | 将列表中的多个字符串以指定分隔符连接在一起,参数为列表 | “-”.join([‘北京’, ‘上海’, ‘深圳’]) | “北京-上海-深圳" |
split() | 按某字符分割字符串,默认按空格分隔,返回值为列表 | “北京-上海-深圳".split(“-”) | [‘北京’, ‘上海’, ‘深圳’] |
find() | 搜索指定字符串,没有返回 -1 | “hello yuan”.find(“yuan”) | 6 |
index() | 同上,但是找不到会报错 | "hello yuan”.index(“yuan”) | 6 |
count() | 统计指定的字符串出现的次数 | “hello world”.count(“l”) | 3 |
replace() | 替换 old 为 new,可以有第三个参数,表示替换几次 | hello world’.replace(‘world’,‘python’) | “hello python” |
capitalize() | 返回该字符串的首字母大写形式 | “shen”.capitalize() | “Shen” |
注意:
字符串的很多内置方法都是先复制一个新的字符串副本,然后对新字符串副本进行变换,并不会影响原字符串。这是 Python 的习惯。如下所示:
str1 = "HelloWorld"
str2 = str1.upper()
print(str2)
print(str1) # 原字符串并没有受影响
# 输出:
HELLOWORLD
HelloWorld
运算符
运算符类别 | 运算符 | 示例 | 结果 |
---|---|---|---|
计算运算符 | + - * / % | 1+1 5%2 | 分别是 2 和 1 |
比较运算符 | > < == >= <= | 3>2 | TRUE |
赋值运算符 | = += -= *= %= | x=10; x+=2 | x=12 |
逻辑运算符 | and or not | 2>1 and 32 2>1 or 32 | FALSE 和 True |
成员运算符 | in | 5 in [1,2,3,4] | FALSE |
Python 中进行范围判断时,可以偷懒:
# 范围
age = 20
print(age > 10 and age < 35) # 正常写法
print(10 < age < 35) # 更精简的写法
# 输出结果:
True
True