跳到主要内容

从 C++ 到 Python

带 C++ 程序员快速上手 Python。

一、注释

# 单行注释

'''多行注释'''

"""多行注释"""

二、字符串

'Hello, python!'
# 单、双引号都可以,没有区别
# 倾向于用单引号

三、I/O与变量

# 输出
print('Hello, python!')
# Python句末可以没有分号
# 倾向于用没有分号

# 输入
a = input() # Python变量无需声明
b = input('Enter b: ') # 提示用户要输入的内容

四、基本数据类型及其转换

在本节中,无特殊说明的引用都摘自 Python六大基本数据类型,略有删改。更多信息可以看看原文。

数字(number)

数字又分为 int,float,complex(复数) 三种。(Python 2 中还有 long,在 Python 3 中已取消。)又有 bool(值为 TrueFalse),它是 int 的子类。

复数(complex)由实数部分和虚数部分构成,可以用a + bj,或者 complex(a, b) 表示, 复数的实部 a 和虚部 b 都是浮点型。 在 Python 中定义整数的大小没有限制,可以是一个无限大的整数,比如: a = 123456789123456789 如果数字的长度过长时,可以使用下划线作为分隔符,比如: a = 123_345_789_123_456_789

其他进制的整数: 十进制:不能以0开头 二进制:以0b开头 八进制:以0o开头 十六进制:以0x开头 但是注意,所有以其他进制定义的整数,输出结果均为十进制

# 创建
i = 1
f = 1.0
z = 1 + 2j # 不是1 + 2i

int(x):将x转换为一个整数。

float(x):将x转换到一个浮点数。

complex(x):将x转换到一个复数,实数部分为 x,虚数部分为 0。

complex(x, y):将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。

字符串(string)

Python 中没有字符类型。

# 创建
str 'hello'

以下内容摘自 python截取字符串(字符串切片),略有改动。

s = 'python'
print(s) # 输出:python
# 从前面截取
print(s[1]) # 输出:y,根据下标取字符
print(s[:]) # 输出:python,从头取到尾
print(s[1:]) # 输出:ython,下标1开始,取到结尾
print(s[0:2]) # 输出:py,下标0开始,取到下标2,顾头不顾尾,所有不包含下标2
print(s[0:100]) # 输出:python,束位置即使超出字符串实际长度,也不影响正常切片操作
# 从后面截取
print(s[-1]) # 输出:n,根据下标取字符
print(s[-1:-3]) # 无输出,切片要遵循从左向右切的规则
print(s[-3:-1]) # 输出:ho,从下标-3开始,取到下标-1,顾头不顾尾,所有不包含下标-1

列表(list)

列表的截取方法与字符串差不多。

# 创建
a = [1,2,3]
b = [3,2,1]

# 访问(其实就是截取)
print(a[0])#输出:1

# 运算
print(a + b) # 输出:[1, 2, 3, 3, 2, 1],把b拼接到a末尾
print(a * 2) # 输出:[1, 2, 3, 1, 2, 3],把a重复两遍

# 检查是否包含某元素
print(1 in a) # 输出:True

# 函数
print(len(a)) # 输出:3,a的长度
print(min(a)) # 输出:1,a中的最小值
print(max(a)) # 输出:3,a中的最大值

元组(tuple)

一个不可变的序列 创建tuple元组,使用(),多个值之间用逗号隔开,注意()括号可以省略不写,但是如果tuple元组中的元素只有一个时,也必须使用,元素才能证明是一个tuple类型的变量

#创建
t1 = (1,2,3)
t2 = 1,2,3

集合(set)

字典(dictionary)

以上两者本文不介绍。

类型检查

print(type('hello')) # 输出:<class 'str'>

五、基本运算

Python 中没有 ++--

语句含义语句含义
a // b(有a //= b整数除法a ** b(有a **= baba^b
!=<>不等于and
ornot

没提到的与 C++ 一样。

print(1 + 1) # 输出:2
print(1.0 + 1.0) # 输出:2.0
print('1' + '1') # 输出:11
# A+B Problem.py
a = input('Enter a: ')
b = input('Enter b: ')
print(int(a) + int(b))

六、控制语句

Python 与 C++ 的区别:

  • 没有括号,但是末尾要加 :
  • 没有大括号,靠缩进区分。

if、else

# even-odd.py
a = input('Enter a number: ')
if int(a) % 2 == 0:
print('even')
else:
print('odd')

while

# while.py
i = 0
while i < 100:
print(i)
i += 1

for

# for.py
for a in 'hello':
print(a)

还可以搭配 range() 使用。

range()

函数语法

range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

(摘自 Python range() 函数用法

# sum.py
sum = 0
for i in range(101):
sum+=i
print(sum)

输出:

5050

break、continue

略。

七、函数

# 定义
def func(a, b): # 与控制语句一样,此处要加冒号
return a + b # 可以不return,此时将自动return None

# 调用
print(func(1, 2)) # 输出:3
print(func(a = 1, b = 2)) # 输出同上
print(func('a', 'b')) # 输出:ab

以下内容摘自 python基础知识之函数的定义及用法

# 拆包
def func():
return 11,22,33 # 当返回结果有多个值时,会以元组的形式返回

c1 = func()
print(c1) # 返回的是一个元组(11,22,33)

a,b,c =func() # 可以通过变量把返回的元组进行拆包,接收对应的值,a接收了11,b接收了22,c接收了33
print(a,b,c) # 返回对应的元素11,22,33

八、模块

Python 的一大优点就是其拥有大量、优质的库。

pip

在 Python 中安装库可以使用 pip。Python 内置 pip。以下是它的使用教程。

检查更新

建议每次使用 pip 前先要检查更新。打开 PowerShell。如果你没有设置环境变量的话,需要在 python.exe 的目录下打开。(比如 Python3.31 的目录是 C:\Users\Administrator\AppData\Local\Programs\Python\Python311\。)

在 PowerShell 中输入:

python -m pip install --upgrade pip

安装库

以安装 numpy 为例,在 PowerShell 中输入:

pip install numpy

镜像源

在国内使用 pip 下载会很慢。使用镜像源可以大大提高速度。这里以中国科学技术大学的(推荐)为例。

仍以安装 numpy 为例,在 PowerShell 中输入:

pip install -i https://pypi.mirrors.ustc.edu.cn/simple numpy

如果想将该镜像源设为默认源,则在 PowerShell 中输入:

pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple

其他优秀的镜像源还有清华大学的:https://pypi.tuna.tsinghua.edu.cn/simple、阿里云的 https://mirrors.aliyun.com/pypi/simple

在 Python 中导入和使用模块

以 numpy 为例:

# 导入模块
import numpy
# 测试一下
arr = numpy.array([0,1,2,3]) # 通过“numpy.”来调用numpy中的内容
print(arr)

还可以这样写,减少代码键入量:

import numpy as np # 将np作为numpy的别名

arr = np.array([0,1,2,3]) # 这里只用写“np.”
print(arr)

如果只想导入类中的某个内容,可以这样写:

from numpy import array

arr = array([0,1,2,3])
print(arr)

九、别的一些什么东西

格式化字符串

如:

s = 'a = %d, b = %d' % (a,b)

这方面好像和 printf() 是一样的。