Python基础语法

Python基础语法

常量的表达式

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

在python当中,2/3 = 0.6666666,而不是0,在C/C++以及java当中,整数除以整数结果还是整数!并且会把小数部分直接舍弃,那么为什么最后是5呢?按照四舍五入不应该是667吗?

编程中,一般没有"四舍五入"这样的规则,这样的小数一般称为浮点数,是由IEEE754标准,在内存中表示浮点数的时候,可能会存在微小的误差。

注意:形如 1 + 2 - 3称为表达式,这个表达式的运算结果,称为表达式的返回值

1 2 3 这样的数字称为字面值常量,+ - * /这些称为运算符。

示例

给定四个分数,67.5,89.0,12.9,32.2,编写代码,求这四个分数的平均数

print((67.5 + 89.0 + 12.9 + 32.2) / 4)
image-20230125151255223

变量和类型

变量是什么

有的时候,我们需要进行的计算可能更复杂一些,需要把一些计算的中间结果保存起来,这个时候就需要用到变量。

方差:

  1. 计算平均值(此处的平均值,会在后面反复的被使用)
  2. 针对每个数字,分别计算数字和平均值的差值,再平方
  3. 把上述的平均值相加
  4. 除以样本数量
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)
result = total / 4
print(result)

**表示乘方

image-20230125153043945

变量可以视为是一块用来存储数据的空间,变量是存储在内存上的。

我们可以把内存想像成是一个宿舍楼,这个宿舍楼上有很多的房间.每个房间都可以存放数据.
衡星内存的一个重要指标就是内存空间的大小比如我的电脑内存是16GB.这个数字越大,意味着内存的存储空间就越大,能够存放的数据(变量)就越多.

创建变量

a = 10

=表示赋值运算符,不是数学上的比较等于,就是将10放到a上去

变量命名的规则:

  1. 变量名必须由数字,字母,下划线组成,不能包含特殊符号
  2. 变量名不能以数字开头
  3. 变量名不能和Python的"关键字"重复
  4. 变量名是区分大小写的

建议命名规则:

  1. 命名时尽量使用描述性的单词来表示,尽量通过名字来表现出变量的作用
  2. 当我们使用一个单词描述不清楚的时候,可以使用多个单词来命名,当包含多个单词时,具有命名规范:
  1. 驼峰命名:除了第一个单词的首字母之后,后续每个单词的首字母都大写,例如:personInfo
  2. 蛇形命名:单词之间,使用下划线_来进行分割,例如:person_info

使用变量

读取变量的值

a = 10
print(a)

修改变量的值

a = 20
print(a)

在python中,修改变量也是使用 = 运算,看起来和定义变量没有明显区别

也可以用一个变量的值赋给另外一个变量

a = 10
b = 20

a = b

print(a)
print(b)

变量的类型

变量里面存储的不仅仅是数字,还可以存储其它种类的数据.为了区分不同种类的数据,我们引入了"类型"这样的概念。

注意:和C++/ Java等语言不同, Python变量的类型不需要显式指定,而是在赋值的时候确定的。

(1) 整数

a = 10
print(type(a))
# type函数可以用来检测类型
image-20230125175812563

注意:type和 print类似,也是 python内置的函数.可以使用type来查看一个变量的类型。
注意:和C++ /Java等语言不同, Python的 int 类型变量,表示的数据范围是没有上限的.只要内存足够大,理论上就可以表示无限大小的数据。它可以根据表示的数据的大小,自动扩容,因此Python没有long、long long等类型

(2) 浮点数(小数)

a = 0.5
print(type(a))
image-20230125180111727 注意:和C+/lava等语言不同, Python的小数只有float一种类型,没有double类型.但是实际上Python的float就相当于C++/ Java的double,表示双精度浮点数。 双精度浮点数相比于单精度浮点数,双精度浮点数占用的内存空间更多,同时表示的数据精度更高(大概精确到小数点后15位)。

Python的一个设计哲学:解决一个问题,只提供一种方案

(3) 字符串

把一个个字符放到一起就是字符串,什么是字符?像英文字母,阿拉伯数字,标点符号,汉字符号等都可以是字符。引号使用’或者"都是可以的

c = "hello"
print(type(c))

image-20230125182440118

如果字符串里面包含了双引号,表示字符串就可以使用单引号引起来,如果字符串里面包含了单引号,表示字符串就可以使用双引号引起来,如果同时有单引号和双引号,咋办?

可以使用三引号引起来。

使用内置函数计算字符串的长度:

print(len(c));

image-20230125183640708

字符串拼接:

a1 = "hello"
a2 = "world"
print(a1 + a2)

image-20230125183811371

形如这样的代码就是字符串拼接,也就是把后面的字符串拼接到前一个字符串的末尾,对于原来的a1,a2是没有影响的。

在python中报错有两种情况:

  1. 语法错误,在程序运行之前,python解释器,就能把错误识别出来
  2. 运行错误,在程序运行之前,识别不了的,必须要执行到对应的代码,才能发现问题

(4) 布尔类型

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

布尔类型也是数学上的一个概念.我们初中就学过一个概念叫做“命题",进一步的就可以判定命题的真假。

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

注意:python的真假首字母是大写。

image-20230125185139229

(5) 其他

除了上述类型外,python中还有list,tuple,dict,自定义类型等等。

为什么要有这么多类型?

类型带来的意义:

  1. 不同的类型,占用的内存空间是不同的

int默认是4个字节,动态扩容

float固定8字节

bool一个字节

str是变长的

  1. 不同的类型,对应能够进行的操作也是不同的

int/float 可以进行±*/,不能使用len

str 可以+ 但是不能-*/,可以使用len

动态类型特性

程序在运行过程中,变量的类型可能会发生改变

a = 10
print(type(a))

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

a = True
print(type(a))

image-20230125190711839

静态类型:程序运行过程中,变量的类型始终不变,比如C++,Java

比如C++当中:int a = 10;a这个变量在程序运行的整个过程中,始终都是int,如果尝试a = “hello”,编译阶段就是报错。

一个编程语言,是否是动态类型,只是取决于运行时,类型是否发生改变,不取决于变量定义的时候是否声明类型!

Python作为一个动态类型的语言,在定义变量的时候,也是可以写类型的!

a:int = 10

动态类型写法比较灵活,提高了语言的表达能力,然而,在编程中,“灵活"这个词往往是"贬义”,更容易出错!!!

相比之下,静态类型的语言还是更好一些的,尤其是在一些大型的程序中,多人协作开发

注释

python当中有两种注释风格:

(1)注释行
使用#开头的行都是注释

#这是一行注释

(2)文档字符串

使用三引号引起来的称为"文档字符串",也可以视为是一种注释。

  • 可以包含多行内容,

  • 一般放在文件/函数/类的开头

    """
    这是文档字符串工这是文档字符串
    """
    

注释的规范

  1. 内容准确:注释内容要和代码一致,匹配,并在代码修改时及时更新。

  2. 篇幅合理:注释既不应该太精简,也不应该长篇大论.

  3. 使用中文:一般中国公司都要求使用中文写注释,外企另当别论

  4. 积极向上:注释中不要包含负能量(例如领导SB等).

输入输出

和用户交互

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

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

输入输出的最基本的方法就是控制台,用户通过控制台输入一些字符串,程序再通过控制台打印出一些字符串。
PyCharm运行程序,下方弹出的窗口就可以视为是控制台。

通过控制台输出

python使用print函数输出到控制台

print('hello')

不仅能输出一个字符串,还可以输出一个其他类型的变量

a = 10
print(a)

b = True
print(b)

tips:

如何批量注释代码:

  1. 选中要注释的代码
  2. 使用ctrl+/

我们希望使用print打印出"a = 10"这样的内容,也就是希望把数字和字符串混在一起打印

怎么打印呢?

print(f"a = {a}")

这个语法叫做"格式化字符串",使用f作为前缀的字符串,称为f-string,此处的f表示"format",此时就可以使用{}来嵌入变量或者表达式

通过控制台输入

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

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

input执行的时候,就会等待用户输入。

注意:

  • input的参数相当于一个"提示信息",也可以没有。
  • input的返回值就是用户输入的内容,是字符串类型。
image-20230126120353692

如果只是单纯的拿到用户的输入,进行打印,此时就按照str打印即可,如果需要进行运算则需要转为int。

a = input("请输入第一个整数:")
b = input("请输入第二个整数:")
print(f'a + b = {a + b}')
image-20230126120630034

此处的结果是字符串拼接,不是算术运算.如果要想进行算术运算,需要先转换类型。

a = input("请输入第一个整数:")
b = input("请输入第二个整数:")
a = int(a)
b = int(b)
print(f'a + b = {a + b}")
image-20230126120734424

如果想把整数转成字符串:str()

如果想把字符串转成浮点数:float()

例子:

# 输入四个小数,求四个小数的平均值

a = input("请输入第一个数字:")
b = input("请输入第一个数字:")
c = input("请输入第一个数字:")
d = input("请输入第一个数字:")

a = float(a)
b = float(b)
c = float(c)
d = float(d)

avg = (a + b + c + d) / 4
print(f"平均值是:{avg}")
image-20230126121227100

运算符

运算符分为算术运算符、关系运算符、逻辑运算符、赋值运算符

算术运算符

+ - * / % ** //

规则:先算乘方,然后是乘除,最后算加减

注意:0不能作为除数,有些编程语言中,除整数0也是会抛出异常,除浮点数0会得到无穷大,而Python都认为是除0异常。

%是求余数,**进行乘方运算,也支持小数乘方,//是取整除法,会针对计算的结果进行"向下取整"

print(7 // 2)
image-20230126124717928

关系运算符

比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。

关系运算符说明
>大于,如果>前面的值大于后面的值,则返回 True,否则返回 False。
<小于,如果<前面的值小于后面的值,则返回 True,否则返回 False。
==等于,如果==两边的值相等,则返回 True,否则返回 False。
>=大于等于(等价于数学中的 ≥),如果>=前面的值大于或者等于后面的值,则返回 True,否则返回 False。
<=小于等于(等价于数学中的 ≤),如果<=前面的值小于或者等于后面的值,则返回 True,否则返回 False。
!=不等于(等价于数学中的 ≠),如果!=两边的值不相等,则返回 True,否则返回 False。
is判断两个变量所引用的对象是否相同,如果相同则返回 True,否则返回 False。
is not判断两个变量所引用的对象是否不相同,如果不相同则返回 True,否则返回 False。

注意:关系运算符不光可以针对数字进行比较,还能够比较字符串,根据字典序比较。在C++和java当中不能使用== !=进行比较字符串是否相等,而在python当中是可以的。针对浮点数来说,使用==比较相等,存在一定的风险,因为浮点数在内存中的存储和表示,是可能存在误差的!这样的误差在进行算术运算的时候就可能被放大,从而导致==的判定出现误判。

print(0.1 + 0.2 == 0.3)
print(0.1)
print(0.2)
print(0.1 + 0.2)
print(0.3)
image-20230126131115286

浮点数之间正确比较:

a = 0.1 + 0.2
b = 0.3
#这个代码是看a- b差是否是一个非常小的数字,是否在误差范围之内
print(-0.000001 < (a - b)< 0.000001)

这个代码是看a- b差是否是一个非常小的数字,是否在误差范围之内

逻辑运算符

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 and b < c)
print(a < b and b > c)
print(a < b and b > c)

print(not a < b)
print(not a > b)

对于and操作来说,如果左侧表达式为False,那么整体的值一定是False,右侧表达式不必求值!
对于or操作来说,如果左侧表达式为True,那么整体的值一定是True,右侧表达式不必求值!

赋值运算符

(1) = 的使用
= 表示赋值,这个我们已经用过很多次了,注意和==区分,=除了基本的用法之外,还可以同时针对多个变量进行赋值。

链式赋值

a = b = 10

多元赋值

a,b = 10,20

print(a)
print(b)
image-20230126191550950

能解决一些特殊问题:完成两个变量交换

a,b = 10,20
a,b = b,a
print(a)
print(b)
image-20230126191956092

(2) 复合赋值运算符

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

其中a += 1等价于a = a + 1。其他复合赋值运算符也是同理。

python中不支持++ , --这样的自增自减操作的!!++和–的最大问题就是容易分不清前置和后置的区别,这一点python语法在设计的时候就进行了规避。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赵小赵福星高照~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值