介绍:
Python 是开发效率高、生态强大但性能偏弱的一种编程语言,适合快速开发和上层应用;而C++ 是性能极强、控制能力强但开发成本高的系统级语言,适合底层和高性能场景;两者不是对立的,而是互补的,很多大型项目都是用 C++ 做核心,Python 做上层封装,兼顾效率和性能。
1,标准输入输出
1,标准输入
python 使用 input 函数,从控制台读取用户的输入。类似 C++ 中的scanf。
input 从控制台或终端等待你输入一行内容,按回车结束,它读到的内容一律是字符串类型。它返回值就是用户输入的内容,是字符串类型,想当数字用必须强转。
# 基本用法
s = input()
# 带提示文字
name = input("请输入名字:") # 输入12,name的数据是控制台上的输入
print("你好", name) # 输出:你好 12age = int(input("请输入年龄:")) # 类型强转int
score = float(input("请输入分数:")) # 类型强转floata = input('请输入第一个整数: ')
a = int(a)
2,标准输出
print(1 + 2 - 3) # 输出0
print(1 + 2 * 3) # 输出7
print(1 + 2 / 3) # 输出1.6666666666666665num = 10
print(f'num = {num}') # 输出num = 10
print('num = {num}') # 输出num = {num}
name = input("请输入名字:") # 输入12
print("你好", name) # 输出你好 12name = 'python'
print("你好" + name) # 输出你好python
print("你好" + num) # 输出错误,+ 两边类型不一样
print 是一个 Python 内置的标准输出函数,函数内,可以使用 + - * / ( ) 等运算符进行算术运算。先算乘除,后算加减。运算符和数字之间,可以没有空格,也可以有多个空格。
使用 f 作为前缀的字符串,称为 f-string,里面可以使用 { } 来内嵌一个其他的变量或表达式。
print("你好", name)这里的逗号表示这是两个独立的参数,即"你好"和"name"是两个独立参数。Python 规定,多个参数输出时,自动加一个空格分隔,因此输出时两参数中间有一个空格。
print("你好" + name)里面 "+" 两边的类型必须一致,不一致会报错。
注意:C/C++中,2 / 3 结果为 0 (小数部分被截断),而 // 运算符才会进行取整运算。但是在 Python 中得到的结果则是一个小数。其次,Python中,单行注释符号是'#',多行注释符号是 """ 或者 '''。
2,变量和类型
Python和C++等语言不同,Python变量的类型不需要显式指定,而是在赋值的时候确定的,类型是自动推断的。
a = 10
a = 15
b = 20
a = b
print(a)
print(b)print(a ** 2) # 输出400
Python里,变量 ** 2 就是求这个变量的 2 次方。** 是 Python 的幂运算符,例如,x ** 3 就是立方,x ** 0.5 就是开平方。
1,整形int
a = 10
print(type(a)) # 输出<class 'int'>
注意:Python 和 C++ 等语言不同,Python 的 int 类型变量,表示的数据范围是没有上限的。只要内存足够大,理论上就可以表示无限大小的数据。
2,浮点数float
a = 0.5
print(type(a)) # 输出<class 'float'>
注意:Python 和 C++ 等语言不同,Python 的小数只有 float 一种类型,没有 double 类型,但是实际上 Python 的 float 就相当于 C++ 的 double,表示双精度浮点数。
3,字符串str
a = 'hello'
print(len(a)) # 输出5
b = 'world'
print(a + b) # 输出helloworld
print(type(a)) # 输出<class 'str'>
使用 ' ' 或者 " " 引起来的,称为字符串。在 Python 中,单引号构成的字符串和双引号构成的字符串没有区别,例如,'hello' 和 "hello" 是完全等价的。这里可以使用 len 函数来获取字符串的长度,还可以使用 + 针对两个字符串进行拼接。字符串作为开发中最常用到的数据类型,支持的操作方式也是非常丰富的,用到时根据其他语言经验进行理解即可,这里不再一一说明。
4,布尔型bool
布尔类型是一个特殊的类型,取值只有两种,True (真) 和 False (假)。
a = True
print(type(a)) # 输出<class 'bool'>
b = False
print(type(b)) # 输出<class 'bool'>a = 10
b = 20
c = 30
print(a < b and b < c)****# 输出Trueprint(a < b and b > c)****# 输出False
print(a > b or b > c)****# 输出False
print(a < b or b > c)****# 输出True
print(not a < b)****# 输出False
print(not a > b)****# 输出True
and or not 这一系列的运算符称为逻辑运算符。and 类似 C/C++ 中的 "&&",or 类似 C/C++ 中的 "||",not 类似 C/C++ 中的 "!"。
5,列表list和元组
1,列表
list是 Python 中的可变序列类型。里面元素按放入顺序排列,有下标(索引),且可以增、删、查、改元素,允许出现相同值和任意类型混放。
a = 1,2,3
print(type(a)) # 输出<class 'list'>
b = 1, 2, 3, "hello", \[4, 5, True]
# 增添元素
b.append(40) # 末尾添加
b.insert(0, 5) # 指定位置插入(索引下标0,第一个元素)print(b) # 输出5, 1, 2, 3, 'hello', \[4, 5, True, 40]
# 删除元素
b.pop() # 删除最后一个
b.pop(0) # 删除指定下标
b.remove(20) # 删除第一个值为20的元素
del b1 # 直接删除
b.clear() # 清空# 查找元素
print(b0) # 输出1
print(b-1) # 输出True(倒数第一个)
print(b-2) # 输出4, 5(倒数第二个,后面类似)
# 修改元素
b1 = 999
len(b) # 获取长度
alist = 1, 2, 3, 4
print(alist1:3) # 输出2, 3alist = 1, 2, 3, 4
print(alist1:) # 省略后边界, 表示获取到列表末尾
print(alist:-1) # 省略前边界, 表示从列表开头获取
print(alist:) # 省略两个边界, 表示获取到整个列表# 指定步长,也就是每访问一个元素后,下标自增几步
alist = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
print(alist::1)
print(alist::2)
print(alist::3)
print(alist::5)# 指定的步长还可以是负数,此时是从后往前进行取元素
alist = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
print(alist::-1)
print(alist::-2)
print(alist::-3)
print(alist::-5)# 如果填写的数字越界了,不会有负面效果,只会尽可能的把满足条件的元素过去到
alist = 1, 2, 3, 4
print(alist3:200) # 输出 4
2,元组
元组的功能和列表相比基本是一致的, 不同的是元组使用 "()" 来表示。其次,元组不能修改里面的元素,列表则可以修改里面的元素,操作与列表基本都是一样的。
6,dict字典类型
dict 是键值对映射,用来存 "名字 - 内容" 这种对应关系的数据,是 Python 里最常用的映射类型。该类型等同于 C++ 的 std::map/std::unordered_map。
# 基本语法
d = {} # 空字典b = dict()
person = {
"name": "张三",
"age": 20,
"height": 175.5
} # 有数据的字典# 取值
print(person"name") # 张三
print(person.get("age")) # 20# 修改或添加
person"age" = 21 # 修改
person"gender" = "男" # 新增# 查找。使用 in 可以判定 key 是否在字典中存在,返回布尔值
print('id' in person) # 输出False
print('name' in person) # 输出True
# 删除
del person"height"
person.pop("age")
person.clear() # 清空# 遍历
for k in person:
print(k)
for key in student:
print(key, studentkey)
7,动态类型
Python中,一个变量是什么类型,是可以在程序运行过程中发生变化的。这个特性称为动态类型。变量不用声明类型,赋值什么类型,它就是什么类型,运行时可以随便改。
a = 10 # 现在是 int
a = "hello" # 现在变成 str
a = 1,2,3 # 又变成 list
特点:
- 不用提前写类型。
- 同一个变量,运行时可以变类型。
- 类型是跟值绑定,不是跟变量名绑定。
Python 3.5+ 支持类型注解,只是给人看、给编辑器提示,不影响运行。
age: int = 18
name: str = "张三"
height: float = 1.75
is_student: bool = Truenums: listint = 1,2,3
user: dictstr, str = {"name": "Tom", "sex": "male"}
3,条件语句
Python 的条件语句就是 if/elif/else,和 C++ 逻辑一样,但写法更简单。
if 条件1:
代码块
elif 条件2:
代码块
else:
代码块
条件后面必须加冒号 ":",代码块用缩进表示(跟C++不一样,不用大括号),缩进一般是4个空格。
score = 85
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
条件语句中有一个空语句pass,不会对程序的执行有任何影响,只是占个位置,保持 Python 语法格式符合要求。
a = int(input("请输入一个整数:"))
if a != 1:
pass
else:
print("hello")# 上面逻辑与下面等价
a = int(input("请输入一个整数:"))
if a == 1:
print("hello")
4,循环语句
1,while 循环
while 条件:
循环体代码
i = 1
while i <= 5:
print(i)if i == 5:
break
i = i + 1
2,for 循环
Python 的 for 主要用来遍历东西,比如列表、字符串。
for 循环变量 in 可迭代对象:
循环体
nums = 10, 20, 30
for n in nums:
print(n)s = "hello"
for c in s:
print(c)# 打印1-10
for i in range(1, 11):
if i == 3:
continue
print(i)
5,函数
Python 函数用 def 定义,和 C++ 的函数思路一样,但写法更简单。
def 函数名(参数):
函数体
return 返回值
函数用 def 关键字,括号里是参数(可以没有),后面必须加冒号 ":",函数内代码用缩进,return 用来返回结果(可以没有)。
# 定义求和函数
def calcSum(beg, end):
sum = 0
for i in range(beg, end + 1):
sum += i
print(sum)
在不同的作用域中,允许存在同名的变量。Python 的作用域跟 C/C++ 不同,需要使用 "{}" 说明作用域,Python 依靠缩进表明作用域,这块根据 C/C++ 作用域理解运用即可。如果是想在函数内部修改全局变量的值,需要使用 global 关键字声明。
x = 20 # 全局作用域
def test():
x = 10 # 函数内部作用域
print(f'函数内部 x = {x}') # x = 10test()
print(f'函数外部 x = {x}') # x = 20
x = 20
def test():
global x
x = 10
print(f'函数内部 x = {x}') # 函数内部 x = 10
test()
print(f'函数外部 x = {x}') # 函数外部 x = 10
一个函数是可以一次返回多个返回值的。使用 "," 来分割多个返回值。如果只想关注其中的部分返回值,可以使用 "_" 来忽略不想要的返回值。
def getPoint():
x = 10
y = 20
return x, y
a, b = getPoint() # a = 10, b = 20def getPoint():
x = 10
y = 20
return x, y
_, b = getPoint() # b = 20
Python 中的函数,可以给形参指定默认值。这块跟 C++ 用法类似,不再具体说明。
def add(x, y, debug=False):
if debug:
print(f'调试信息: x={x}, y={y}')
return x + yprint(add(10, 20))
print(add(10, 20, True))
字段参数这块,Python 还可以通过关键字参数来调整这里的传参顺序,显式指定当前实参传递给哪个形参。
def test(x, y):
print(f'x = {x}')
print(f'y = {y}')
test(x=10, y=20)
test(y=100, x=200)

最后要说的是,编程语言中,很多语法都是相同的,掌握一门语言后,在学习其他语言后,很多知识都是互通类似的。
6,文件
open 打开文件。close 关闭已经打开的文件。write 方法写入文件。read 读取文件,readline 可以读取一行,readlines读取整个文件内容。这块接口跟 C 中的接口类似。
# 读取文件
f = open('d:/test.txt', 'r', encoding='utf8') # 使用utf8编码方式
result = f.read(2) # 读取两个字符
print(result)
f.close()f = open('d:/test.txt', 'r')
lines = f.readline() # 读取一行。文件每行都自带换行符
print(lines)
f.close()f = open('d:/test.txt', 'r')
for line in f:
print(f'line = {line}') # 一次读取一行
f.close()f = open('d:/test.txt', 'r')
lines = f.readlines() # 直接把文件整个内容读取出来,包括每行末尾的换行符
print(lines)
f.close()# 写入文件
f = open('d:/test.txt', 'w')
f.write('hello')
f.close()

