基于Python3
英文字母
或下划线_
。Python中单行注释以#
开头
# 第一个Python程序
print("Hello Python") # 这里也是注释
多行注释可以用多个#
号,还有三个英文单引号'''
或者三个英文双引号 """
# 第一行注释
# 第二行注释
"""
第三行注释
第四行注释
"""
'''
第五行注释
第六行注释
'''
print("Hello Python")
Python使用缩进代表代码块,不需要使用大括号{}
。
同一个代码块的语句必须包含相同的缩进空格数
age = 18
if age >= 18:
print("age >= 18")
print("成年")
else:
print("age < 18")
print("未成年")
如果同一个代码块语句缩进空格数不一样,则会报错,如下所示:
age = 18
if age >= 18:
print("age >= 18")
print("成年")
else:
print("age < 18")
print("未成年")
报错提示如下
File "D:\pycode\test\test1.py", line 7
print("未成年")
^
IndentationError: unindent does not match any outer indentation level
如果一条语句太长,可以使用反斜杠 \
来连接多行语句
a = "123"
b = "456"
c = "789"
d = a + \
b + \
c
print(d)
name = input("请输入姓名:")
print(name)
print
默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""
如果不换行并且在后面加上某个表示符号,则使用end="标识符"
age = 18
name = "lzc"
# 换行打印到控制台
print(age)
print(name)
print("------")
# 不换行打印到控制台
print(age, end=",")
print(name, end="")
import
或者from...import
来导入相应的模块。somemodule
导入,格式为:import somemodule
from somemodule import somefunction
from somemodule import firstfunc, secondfunc, thirdfunc
from somemodule import *
Python
中的变量不需要指定类型。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
可以通过type()
函数查看变量的类型
a, b, c = 123, 6.66, True
print(type(a), type(b), type(c))
输出内容如下
<class 'int'> <class 'float'> <class 'bool'>
Python3
中常见的数据类型有:数字、字符串、布尔类型、列表、元组、集合、字典
布尔类型即True
、False
在Python
中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为True
,只有0
、空字符串
、空列表
、空元组
等被视为False
。
布尔类型可以用来控制程序的流程,比如判断某个条件是否成立,或者在某个条件满足时执行某段代码。
a = True
if a:
print("a=True")
else:
print("a=False")
布尔值可以用and
、or
和not
运算
a = True
b = False
print(a and b) # False
print(a or b) # True
print(not a) # False
布尔值类型转换
a = True
b = False
print(int(a)) # 1
print(float(b)) # 0.0
print(str(a)) # "True"
Python3
支持int
、float
、bool
Python3
中,bool
是int
的子类,True
和False
可以和数字相加, True==1
、False==0
会返回 True
在Python3
里,只有一种整数类型int
,表示为长整型,没有python2
中的Long
Python
中的字符串用单引号'
或双引号"
括起来,使用反斜杠\
转义特殊字符。
a = "123"
b = '456'
c = "\\n789"
print(a) # 输出 123
print(b) # 输出 456
print(c) # 输出 \n789
字符串的截取语法格式:变量[头下标:尾下标]
,遵循左闭右开原则。下标为负数则代表从尾部开始,比如下标为-1则代表最后一个元素。
使用len()
函数可以获取字符串长度。
a = "123456789"
print(a) # 输出整个字符串
print(a[0:-1]) # 输出第一个到倒数第二个的所有字符
print(a[0]) # 输出第一个字符
print(a[2:5]) # 输出第三个到第五个的所有字符
print(a[2:]) # 输出从第三个开始的所有字符
print(len(a)) # 输出字符串长度
加号+
是字符串的连接符。星号*
表示复制当前字符串,与之结合的数字为复制的次数。
a = "123456789"
print(a + "10") # 连接字符串
print(a * 2) # 输出字符串两次
使用in
和not in
可以判断字符串是否包含给定的字符串
a = "123456789"
b = "456"
print(b in a) # True
print(b not in a) # False
在Python
中,字符串格式化使用与C
中sprintf
函数一样的语法。
print("我叫%s,今年%d岁,浮点数保留两位小数:%.2f,指定整数位数(位数不够前面补0):%03d" % ("张三", 18, 3.1415926, 1))
# 我叫张三,今年18岁,浮点数保留两位小数:3.14,指定整数位数(位数不够前面补0):001
常见的占位符
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
Python
三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
a = """姓名\t年龄
李华\t18
"""
print(a)
列表是写在方括号[]
之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表的截取语法格式:变量[头下标:尾下标]
,遵循左闭右开原则。下标为负数则代表从尾部开始,比如下标为-1则代表最后一个元素。
使用len()
函数可以获取列表长度。
a = ["111", "222", "333", "444", "555"]
print(a) # 完整列表
print(a[0]) # 获取第一个元素
print(a[1:3]) # 获取第二个到第三个的所有元素
print(a[1:]) # 获取从第二个开始的所有元素
print(len(a)) # 获取列表长度
列表常用方法
a = ["111", "222", "333", "333"]
print(a) # ['111', '222', '333', '333']
# 在列表末尾添加新的对象
a.append("666")
print(a) # ['111', '222', '333', '333', '666']
# 删除第二个元素
del a[1]
print(a) # ['111', '333', '333', '666']
# 移除列表中某个值的第一个匹配项
a.remove("333")
print(a)
# 判断元素是否存在于列表中
print("666" in a) # True
print("777" in a) # False
列表遍历
a = ["111", "222", "333", "333"]
for x in a:
print(x)
元组(Tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()
里,元素之间用逗号隔开。元组中的元素类型也可以不相同。
a = (123, "456", 123.12)
print(a)
集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。集合使用大括号{}
表示,元素之间用逗号,
分隔。
a = {123, 456, 789, 123}
print("a =", a) # 重复的元素会被自动去掉
b = {456, 666, 777}
print("a =", b)
print("a - b : a和b的差集 =", a - b)
print("a | b : a和b的并集 =", a | b)
print("a & b : a和b的交集 =", a & b)
print("a ^ b : a和b不同时存在的元素 =", a ^ b)
字典是一种映射类型,字典用{ }
标识,它是一个无序的键(key):值(value)
的集合。键(key)
必须使用不可变类型。在同一个字典中,键(key)
必须是唯一的。
a = {}
a["name"] = "张三"
a["age"] = 18
print(a)
b = {"city": "shenzhen"}
print(b)
输出内容如下
{'name': '张三', 'age': 18}
{'city': 'shenzhen'}
对数据内置的类型进行转换,一般情况下你只需要将数据类型作为函数名即可。
数据类型转换可以分为两种:显式类型转换(需要使用类型函数来转换)、隐式类型转换(自动完成)
Python
会自动将一种数据类型转换为另一种数据类型。
对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。
num_int = 123
num_float = 1.23
num_new = num_int + num_float
print("datatype of num_int:", type(num_int))
print("datatype of num_float:", type(num_float))
print("value of num_new:", num_new)
print("datatype of num_new:", type(num_new))
输出如下
datatype of num_int:
datatype of num_float:
value of num_new: 124.23
datatype of num_new:
使用int()
、float()
、str()
函数来执行显式类型转换
int()
强制转换为整形
x = int(1)
y = int(2.8)
z = int("3")
print(x, type(x))
print(y, type(y))
print(z, type(z))
输出如下
1
2
3
float()
强制转换成浮点类型
x = float(1)
y = float(2.8)
z = float("3")
w = float("4.2")
print(x, type(x))
print(y, type(y))
print(z, type(z))
print(w, type(w))
输出如下
1.0
2.8
3.0
4.2
str()
强制转换成字符类型
x = str("s1")
y = str(2)
z = str(3.0)
print(x, type(x))
print(y, type(y))
print(z, type(z))
输出如下
s1
2
3.0
条件语句是通过一条或多条语句的执行结果(True
或者False
)来决定执行的代码块。
条件控制中常用的操作运算符和逻辑运算符
操作符 | 描述 |
---|---|
< |
小于 |
<= |
小于或等于 |
> |
大于 |
>= |
大于或等于 |
== |
等于,比较两个值是否相等 |
!= |
不等于 |
and |
与 |
or |
或 |
not |
非 |
一般形式如下
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
score = 80
if score < 60:
print("不及格")
elif score >= 60 and score < 80: # 这里可以写成 60 <= score < 80
print("良")
else:
print("优秀")
Python 3.10 增加了match...case
的条件判断
match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>
例如:
day = 1
match day:
case 6:
print("星期六")
case 7:
print("星期日")
case _: # 当其他 case 都无法匹配时,匹配这条
print("工作日")
num = 1
while num <= 10:
print(num)
num = num + 1
在Python
中没有do..while
循环。
如果while
后面的条件语句为false
时,则执行else
的语句块。
num = 1
while num <= 5:
print(num, "小于等于5")
num = num + 1
else:
print(num, "大于5")
for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。
for <variable> in <sequence>:
<statements>
else:
<statements>
例如
list = ["aaa", "bbb","ccc","ddd"]
for x in list:
print(x)
for…else 语句用于在循环结束后执行一段代码
list = ["aaa", "bbb","ccc","ddd"]
for x in list:
print(x)
else:
print("循环介绍")
使用def
关键字定义函数
def 函数名(参数列表):
函数体
使用函数计算两个数相加
def sum(a, b):
return a + b
c = sum(10, 20)
print(c)
def hello(name):
print("name:", name)
hello()
不传参数会报错
Traceback (most recent call last):
File "D:\pycode\test\test1.py", line 4, in
hello()
TypeError: hello() missing 1 required positional argument: 'name'
使用关键字参数允许函数调用时参数的顺序与声明时不一致
def hello(name, age):
print("name:", name)
print("age:", age)
hello(age=18, name="xiaoli")
输出如下
name: xiaoli
age: 18
调用函数时,如果没有传递参数,则会使用默认参数。
def hello(name, age = 20):
print("name:", name)
print("age:", age)
hello(age=18, name="xiaoli")
print("-------------------")
hello("wangwu")
输出
name: xiaoli
age: 18
-------------------
name: wangwu
age: 20
加了星号*
的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
def hello(a, *b):
print(a)
print(b)
hello(123, 456, 789)
输出
123
(456, 789)
加了两个星号**
的参数会以字典的形式导入。
def hello(a, **b):
print(a)
print(b)
hello(123, name="xiaoli", age="18")
输出
123
{'name': 'xiaoli', 'age': '18'}