Python基础语法1

常量和表达式

Python和其他语言一样,每一个表达式都有一个值,下面是python的一个表达式语句

print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

Python基础语法1_第1张图片

观察上述结果,我们可以发现如下的特点

  1. print是python语言中内置的函数,与C语言需要引入头文件stdio.h不同
  2. python语言中的/不是整除,而是和数学中的除法一样
  3. 运算符和数字之间保留空格会更加美观

示例

下面代码用来求小数的平均值

print((1.1 + 2.2 + 3.3 + 4.4) / 4)

变量和类型

变量是什么?

和其他语言一样,python也支持定义变量来存储数据,变量是存储数据的容器

示例

给定四个分数, 67.5, 89.0, 12.9, 32.2 , 编写代码, 求这四个分数的方差.

PS: 方差的计算过程: 取每一项, 减去平均值, 计算平方, 再求和, 最后除以 (项数 - 1)

average = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - average) ** 2 + (89.0 - average) ** 2 + (12.9 - average) ** 2 + (32.2 - average) ** 2
result = total / 3;

在上述例子中我们使用了变量averagetotalresult记录平均值、平方的和、方差

注意

  • 在python中,**代表乘方
  • average、total、result等均为变量
  • python中变量定义使不需要加上类型

变量可以视为是一块能够容纳数据的空间. 这个空间往往对应到 “内存” 这样的硬件设备上.

PS:我们可以将内存假象为一栋宿舍楼,每一个在内存中定义的变量就是宿舍楼中的每一个房间。宿舍楼空间越大,楼栋中的房间越多;内存的空间越大,可以定义的变量越多。所以衡量内存的一个重要指标使内存空间的大小

变量的语法

0x01.定义变量

a = 1
b = 1.2
c = 'a'
  • =为赋值运算符,表示将=右边的数据存放在左侧的空间中
  • python中定义变量不需要使用类型关键字

**注意:**变量的命名需要遵循一些要求

硬性要求:

  1. 变量必须由字母或者下划线开头
  2. 变量名不能和关键字重复
  3. 变量名大小写敏感,num和Num是两个不同的变量

软性要求

  1. 变量使用具有描述性的单词表示,尽量表达出变量的作用
  2. 一个变量名可以由多个单词构成, 长一点没关系, 但是含义要清晰.
  3. 当变量名包含多个单词的时候, 建议使用 “驼峰命名法”. 形如 totalCount , personInfo 这种, 除了首个单词外, 剩余单词首字母大写.

和大多数语言不同,python语言中并没有限制变量名的长度

0x02.使用变量

读取变量的值

a = 10
print(a)

写入变量的值

a = 10
a = 20

注意:python中写入变量也使用=,这和定义变量没有区别

可以使用一个变量写入另一个变量

a = 10
b = a
print(a)
print(b)

变量类型

前面说过,python和其他语言不同,定义变量时不需要显示写出变量的类型,这并不意味着python中变量没有类型,而是运行时会根据=右边操作数的类型决定变量的类型

可以使用type()函数观察变量的类型

  • type和print一样,是python中内置的函数

整形

a = 10
print(type(a))

在这里插入图片描述

浮点型

b = 10.2
print(type(b))

在这里插入图片描述

  • python中浮点数只有float类型,float相当于C语言中的double双精度浮点数

字符串

c = 'hello'
print(type(c))

在这里插入图片描述

  • 字符串用‘’“”括起来没有区别,‘hello’等价于“hello”

可以使用 len 函数来获取字符串的长度

print(len(c))

在这里插入图片描述

可以使用+来连接字符串

print('hello ' + 'world')

在这里插入图片描述

PS:关于字符串还有很多常用的功能,这里不一一介绍了

布尔

布尔类型是一个特殊的类型, 取值只有两种, True (真) 和 False (假)

a = True
print(type(a))
b = False
print(type(b))

Python基础语法1_第2张图片

其他

python语言中还有list,map,dict,tuple等自定义类型,我们后续介绍


为什么要有这么多类型

  1. 类型决定了变量在内存中占据了多大的内存空间
    例如float占据8字节,int占据4字节

  2. 类型决定了可以对该变量所能执行的操作

    例如可以对int/float类型数据进行+ - * /,但是只能对str类型进行+

总结 类型系统其实是在对变量进行 “归类”. 相同类型的变量(数据) 往往具有类似的特性和使用规则.

动态类型特征

在 Python 中, 一个变量是什么类型, 是可以在 “程序运行” 过程中发生变化的. 这个特性称为 "动态类型

a = 10
print(type(a))
a = 'hello'
print(type(a))

在这里插入图片描述

C/C++语言定义变量后该变量的类型就固定了,这种语言具有静态类型特征

动态类型特性是一把双刃剑.

  • 对于中小型程序, 可以大大的解约代码量(比如写一段代码就可以同时支持多种类型).
  • 对于大型程序, 则提高了模块之间的交互成本. (程序猿 A 提供的代码难以被 B 理解).

注释

注释是什么

注释是一种特殊的代码, 它不会影响到程序的执行, 但是能够起到解释说明的作用, 能够帮助程序猿理解程序代码的执行逻辑.

PS:PS: 写代码是一件比较烧脑的事情, 读代码同样也非常烧脑. 相比于一板一眼的代码, 一些口语化的

描述能更好的帮助程序猿理解程序.

# 计算 4 个数字 67.5, 89.0, 12.9, 32.2 的方差
avg= (67.5+89.0+12.9+32.2) /4
total= (67.5-avg) **2+ (89.0-avg) **2+ (12.9-avg) **2+ (32.2-avg) **2
result=total/3
print(result)

形如上述代码, 如果没有注释, 直接阅读, 是不容易 get 到代码的含义是计算方差. 但是通过加了一行注释解释一下, 就让人一目了然了.

PS: 代码的第一目标是容易理解, 第二目标才是执行正确.

写注释不光是为了方便别人来理解, 也是方便三个月之后的自己理解.

注释的语法

Python中有两种注释风格

(1) 注释行

使用 # 开头的行都是注释.

# 这是一个行注释

(2)文档字符串

  • 可以包含多行内容,
  • 一般放在文件/函数/类的开头.
  • “”" 或者 ‘’’ 均可 (等价).
"""
这是文档字符串
这是文档字符串
""""

注释的规范

  1. 内容准确: 注释内容要和代码一致, 匹配, 并在代码修改时及时更新.
  2. 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
  3. 使用中文: 一般中国公司都要求使用中文写注释, 外企另当别论.
  4. 积极向上: 注释中不要包含负能量(例如领导 SB 等).

输入输出

程序需要和用户进行交互.

  • 用户把信息传递给程序的过程, 称为 “输入”.
  • 程序把结果展示给用户的过程, 称为 “输出”.

输入输出的最基本的方法就是控制台. 用户通过控制台输入一些字符串, 程序再通过控制台打印出一些字

符串.

通过控制台输出

Python 使用 print 函数输出到控制台.

print('hello')
a=10
print(a)
b=True 
print(b)

如果我们想要输出混合字符串和变量就需要使用如下方式

num = 10
print(f'num = {num}')

在这里插入图片描述

注意:

  • f开头的字符串成为f-string
  • 通过{}内嵌一个表达式/变量

通过控制台输入

python 使用 input 函数从控制台读取用户的输入.

num=input('请输入一个整数: ')
print(f'你输入的整数是{num}')

Python基础语法1_第3张图片

注意:

  • input的参数信息是一个“提示信息”,可以没有

  • input返回值是用户输出的内容,是字符串类型

    a = input('请输入第一个数')
    b = input('请输入第二个数')
    print(f'a + b = {a + b}')
    

Python基础语法1_第4张图片

若想要执行算术运算,则需进行类型转换

a = input('请输入第一个数')
b = input('请输入第二个数')
a = int(a)
b = int(b)
print(a + b)

Python基础语法1_第5张图片

通过 int( ) 把变量转成了 int 类型.

类似的, 使用 float( ), bool( ), str( ) 等可以完成对应的类型转换.


运算符

算术运算符

+ - * ** / // % 这种进行运算的符号,被称为算术运算符

注意:

  1. /的右操作数不可以是0,否则会抛出异常

Python基础语法1_第6张图片

  1. /和数学中的除法运算性质一摸一样,1/3的结果为0.333333

  2. //是整除,得到的结果为整数,1//3的结果为0

  3. %是取模运算,操作数必须是整数

  4. **是乘方运算,操作数可以是小数

关系运算符

> >= < <= == != 这一系列运算符为关系运算符,他们是在比较操作数之间的关系

  1. 如果符合该关系,则返回True,否则返回False

  2. 关系运算符不光针对整形/浮点数,还能针对字符串进行比较

    a = 'hello'
    b = 'world'
    print(a < b)
    print(a <= b)
    print(a > b)
    print(a >= b)
    print(a == b)
    print(a != b)
    

Python基础语法1_第7张图片

注意:

  • 直接使用== !=判断字符串是否内容一样(不同于C/C++)

  • 字符串比较大小是根据字典序规则进行的

  • 浮点数不要使用==来判断是否相等(计算机中存储的浮点数是由误差的)

    print(0.1)
    print(0.2)
    print(0.1 + 0.2)
    

    Python基础语法1_第8张图片

逻辑运算符

and or not这一些列的运算符称为逻辑运算符

操作符 结果
and 左右操作数都为True结果为True,否则为False
or 左右操作数都为False结果为False,否则为True
not 操作数为True结果为False,否则为True
a=10
b=20
c=30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)

运行结果

Python基础语法1_第9张图片

特殊写法
a < b and b < c等价于a < b < c

短路效应

  • 对于 and, 如果左侧表达式为 False, 则整体一定为 False, 右侧表达式不再执行.
  • 对于 or, 如果左侧表达式为 True, 则整体一定为 True, 右侧表达式不再执行.
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)

Python基础语法1_第10张图片

上述结果为抛出异常,说明没有执行``10 / 0,说明了and,or`具有短路效应

赋值运算符

(1.)=的使用

注意区分===的区别

链式赋值

a = b = 10

多元赋值|

a, b = 10, 20

代码实例

基础写法

a = 1
b = 2
tmp = a
a = b
b = tmp
print(f"{a},{b}")

多元赋值

a = 1
b = 2
a,b = b, a
print(f"{a},{b}")

(2)复合赋值运算符

python还有一些复合赋值运算符,例如+= -= *= /= %=

a = 10
a = a + 1
print(a)
b = 10
b += 1
print(b)

**注意:**像 C++ / Java 中, 存在 ++ – 这样的自增/自减运算符. Python 中则不支持这种运算. 如果需要使用,

则直接使用 += 1 或者 -= 1

你可能感兴趣的:(python,python,开发语言)