目录
- 变量
- 变量命名规则
- 变量的类型
- 变量的创建
- 变量的作用域
- 注释的方法
- 数据类型
- 对象和引用的概念
- Number(数字)
- 数据转换
- 输入与输出
- 输入函数
- 输出函数
- 输出函数的end参数
- 输出格式
- 多行语句
- 运算符
- 算术运算符
- 赋值运算符
- 三目运算符
- 运算符的优先级
- 缩进
- 缩进格式
- 注意事项
- 层级嵌套
变量
标识符:用户编写代码时,对变量、类、方法等编写的名字,叫做标识符。
变量命名规则
- 变量名必须以字母或下划线字符开头
- 变量名不能以数字开头
- 变量名称只能包含字母数字字符和下划线
- 变量名区分大小写
- 不能与关键字重复
变量的类型
类型 | 说明 | 使用 |
---|---|---|
整型变量(int) | 用来存储整数 | age = 20 |
浮点型变量(float) | 用来存储实数 | price = 3.99 |
字符串型变量(str) | 用来存储字符串 | name = "Tom" |
Python 没有类似 C++ 的long long 和 double 等类型,遇到数据溢出时,会自动扩容。
查看类型的函数:type()
print(type(text))
变量的创建
相比C++的变量创建,Python不需要附加变量的类型。
r = 17
s = "Hello World!"
变量的作用域
在Python中,没有像C++或C语言中的main函数那样的特定入口点。当运行Python程序时,解释器会从脚本的第一行开始执行,逐行执行代码。
global_variable = 42 # 这是一个全局变量
def some_function():
global num # 声明num为全局变量
print(global_variable) # 可以在函数内部访问全局变量
some_function()
print(global_variable) # 可以在函数外部访问全局变量
注释的方法
# 单行注释
'''
多行注释
'''
数据类型
对象和引用的概念
- 对象(Object)是数据的抽象表示,它将数据与操作数据的函数绑定在一起,形成一个完整的实体。对象包含了数据(所谓的属性)和操作数据的方法。
- 引用(Reference)则可以看成指向对象的指针。当我们用一个变量名来指向一个对象时,实际上是建立了一个指向该对象的引用。
- Python中的所有事物都是对象,像数字、字符串、列表、字典等数据类型,都是对象,函数也是对象,Modules同样也是对象。
- 当我们使用一个变量名时,实际上是在操作对象引用,而不是直接操作对象本身。也就是说,变量名仅仅是一个指向目标对象的引用。
- 多个变量名可以指向同一个对象,即多个引用可以指向同一个对象。这就是所谓的“传对象引用”。
- 如果无引用指向一个对象,该对象将被垃圾回收。
下面我们通过一个简单的例子来说明Python的对象和引用:
a = 123
在这个例子中,我们定义了一个变量a,并将其赋值为整数123。实际上,a是一个引用,它存储了整数对象123的地址。
b = a
现在我们定义了另一个变量b,并将其赋值为变量a的值。由于a存储的是整数对象123的地址,因此b也存储了这个地址。因此,a和b引用了同一个对象。
del a
现在我们删除了变量a。由于a和b引用了同一个对象,因此Python并不会释放整数对象123所占用的内存。只有当没有任何引用指向这个对象时,Python才会释放它所占用的内存。
del b
现在我们删除了变量b。由于没有任何引用指向整数对象123,因此Python会释放它所占用的内存。
Number(数字)
Python Number 数据类型用于存储数值。
数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。
以下实例在变量赋值时 Number 对象将被创建:
var1 = 5
var2 = 10
可以使用del语句删除一些 Number 对象引用。
del语句的语法是:
del var1[,var2[,var3[....,varN]]]]
可以通过使用del语句删除单个或多个对象,例如:
del var
del var1,var2, ...... , varN
数据转换
语句(函数) | 说明 |
---|---|
int(x) | 将x转换为一个整数 |
float(x) | 将x转换为一个浮点数 |
str(x) | 将对象 x 转换为字符串 |
str(x)
相较于C++中的 to_string()
函数
int(x)
可以相较于C++中的 stoi()
函数
s = str(123)
注意:
- 任何类型,都可以通过str(),转换成字符串。
- 字符串内必须真的是数字,才可以将字符串转换为数字。
输入与输出
输入函数
使用 input()
输入函数来接收输入流的数据
input语句获取的数据类型最终都是:字符串类型的数据
需要自己转换数据类型
使用方法:
- 不加参数
- 加参数(提示信息)
s = input()
r = input("请输入数字") # 在输入前会有提示信息
输出函数
print()
输出函数(可接 '\n'
换行)
与 C++ 中的 cout 使用类似
与 java 中的print使用相同 print(str1 + str2 + num)
可以各种拼接
import math
r = float(input("请输入圆的半径:> "))
s = r ** 2 * math.pi / 2 # 将字符串类型的数据转换为float类型
print(s)
输出函数的end参数
在Python中,print()函数默认在输出内容之后会自动添加换行符。如果你希望取消自动换行,可以使用end参数将其设置为空字符串或其他值,以替代默认的换行符。
例如:
print("Hello, ", end='')
print("World")
# Hello, World
上述代码中,将end参数设置为空字符串,因此不会在输出内容之后添加换行符,而是继续在同一行上输出后续内容。输出结果将是"Hello, World"。
你还可以使用其他字符来代替默认的换行符,例如:
print("This is a sentence.", end='!!\n')
这将在输出内容之后添加双感叹号和一个换行符,产生类似"This is a sentence.!!"的输出。
通过调整end参数,你可以控制print()函数的输出格式。
输出格式
w = input("今天的天气情况(可选项:晴天、阴天):")
if w == "晴天":
print("打球")
else:
print(f"天⽓{w}不打球")
# 等同于 print("天⽓%s不打球" % w)
f
是 Python 中的 f-string
的标志符号,允许在字符串中嵌入变量的值,{w}
是一个占位符,它将被替换为变量 w
的值。当你使用这个字符串时,f
将会触发字符串内的变量替换,生成最终的字符串,其中 {w}
被 w
的值替代。
%s 替换字符串,与C++中的类似用法,不过后面需 加上% + 替换变量。
print(f"对应的摄⽒温度等于: {c:.2f}") # 进行小数点后两位数的输出
符 号 | 描 述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
多行语句
在编写代码中通常是一行写完一条语句,但如果变量名很长,我们可以使用反斜杠 \ 来实现多行语句在 [], {}, 或 () 中的多行语句。
text1="明天天气"
text2="怎么样,是晴天"
text3= "还是雨天?"
print(text1 + \
text2 + \
text3)
运算符
算术运算符
运算符 | 说明 | 实例 | 结果 |
---|---|---|---|
+ | 加 | 12.45 + 15 | 27.45 |
- | 减 | 4.56 - 0.26 | 4.3 |
* | 乘 | 5 * 3.6 | 18.0 |
/ | 除法 | 7 / 2 | 3.5 |
// | 整除(向下取整) | 7 // 2 | 3 |
% | 取余 | 7 % 2 | 1 |
** | 幂运算 | 2 ** 4 | 164 |
赋值运算符
运算符 | 说 明 | 用法举例 | 等价形式 |
---|---|---|---|
= | 最基本的赋值运算 | x = y | x = y |
+= | 加赋值 | x += y | x = x + y |
-= | 减赋值 | x -= y | x = x - y |
*= | 乘赋值 | x *= y | x = x * y |
/= | 除赋值 | x /= y | x = x / y |
%= | 取余数赋值 | x %= y | x = x % y |
**= | 幂赋值 | x **= y | x = x ** y |
//= | 取整数赋值 | x //= y | x = x // y |
&= | 按位与赋值 | x &= y | x = x & y |
= | 按位或赋值 x | = y | x = x |
^= | 按位异或赋值 | x ^= y | x = x ^ y |
<<= | 左移赋值 | x <<= y | x = x << y,这里的 y 指的是左移的位数 |
<<= | 右移赋值 | x >>= y | x = x >> y,这里的 y 指的是右移的位数 |
三目运算符
与 C++ 条件顺序不同
exp1 if contion else exp2
求两数最大值的例子:
a, b = 10, 100
max_element = a if a > b else b
print(max_element)
运算符的优先级
Python 的 not
与C++的 !
不相同,not
处于最低优先级,而 !
处于最高优先级。
x = 6
result = not x & 1
print(result)
result = (not x) & 1
print(result)
result = not (x & 1)
print(result)
# True
# 0
# True
# not x & 1 等同于 not (x & 1) 而非 C++中的 (not x) & 1
缩进
Python最具特⾊的语法之⼀是⽤缩进代替花括号{},而花括号是Java、C++语⾔中表达逻辑关系的语法。
缩进格式
一般习惯采用四个空格,即TAB一次缩进。
w = input("今天的天气情况(可选项:晴天、阴天):")
if w == "晴天":
print("打球")
else:
print(f"天⽓{w}不打球")
# 等同于 print("天⽓%s不打球" % w)
注意事项
同一代码块缩进量要相同。
Python 虽然不限制代码块的缩进量,你可以随意缩进 n 个空格,但是,同一个代码块内的所有语句都必须拥有相同的缩进量,不能一会缩进 2 个空格,一会缩进 4 个空格。
下面的代码是一个反面教材:
age = int( input("请输入你的年龄:") )
if age < 18 :
print("你还未成年,建议在家人陪同下使用该软件!")
print("未成年人如果得到了家长的同意,请忽略以上提示。") #缩进量不对
运行这段代码,Python 解释器会报出语法错误:
SyntaxError: unexpected indent
# 语法错误:意外的缩进
这段代码中,第一个 print() 语句缩进了 4 个空格,第二个 print() 语句缩进了 6 个空格,缩进量不同导致它们不是同一个代码块。Python 会认为第一个 print() 语句是 if 的执行体,而第二个 print() 是一个意外的存在,不知道该把它当做谁的代码块,所以解析失败,报错。
另外需要注意的是,不需要使用代码块的地方千万不要缩进,一旦缩进就会产生一个代码块。
下面的代码是一个反面教材:
info = "Hello"
print(info)
这两条简单的语句没有包含分支、循环、函数、类等结构,不应该使用缩进。
层级嵌套
w = input("请输⼊天⽓情况(可选项:晴天、阴天):")
fri_n = input("请输⼊打球伙伴数:")
fri_n = int(fri_n)
if w == "晴天":
if fri_n >= 3:
print("我们去打球吧")
else:
print(f"⼈⼿不够")
else:
print(f"天⽓{w}不打球")