【0编程基础入门python】python基础知识+简单代码编写(内附自测题,掌握可入职美团)

文章介绍了Python中的常量表达式,包括算术运算的优先级和规则,并强调了Python中整数除法的结果是浮点数。接着讨论了变量的概念,用于存储计算的中间结果,以及变量命名的规则和类型系统,包括整数、浮点数、字符串和布尔类型。此外,还提到了注释的重要性及其语法,以及输入输出的基础操作,如`print`和`input`函数的使用。
摘要由CSDN通过智能技术生成

1.常量表达式


可以把python当成一个计算器,进行一些算术运算:

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

需要注意的有以下三个点:

  1. print是一个python内置的函数
  2. 可以使用+ - * / ( ) 等运算符进行算术运算,先算乘除,后算加减
  3. 运算符和数字之间,可以没有空格,也可以有多个空格,但是一般写一个空格(比较美观)

形如1 + 2 + 3这样的算式,在编程语言中称为表达式,算式的运算结果,称为表达式的返回值。 其中1, 2, 3这种称为字面值常量, + - * /这种称为运算符或者操作符。

注意: 熟悉C/Java的同学可能认为2/3的结果为0(小数部分被截断),但是在python中得到的结果则是一个小数,更加符合日常使用的习惯。

示例

给定四个分数 66.5,88.7,45.6,34.6 ,编写代码,求这四个分数的平均数

print( (66.5 + 88.7 + 45.6 + 34.6) / 4)

2.变量和类型

变量是什么

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

示例

给定四个分数 66.5,88.7,45.6,34.6 编写代码,求这四个分数的方差

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

在这个代码中,需要先计算四个数的平均值,然后再计算方差,这就需要把计算的平均值使用变量保存起来

avg = (66.5 + 88.7 + 45.6 + 34.6) / 4
total = (66.5 - avg) ** 2 + (88.7 - avg) ** 2
+ (45.6 - avg) ** 2 + (34.6 - avg) ** 2
result = total / 3
print(result)

注意:

  • avg、total、result均为变量
  • ** 在python中表示乘方运算,** 2即为求平方

就像计算器中的M键功能类似,通过变量就可以保存计算过程中的中间结果。

只不过,计算器一般只能保存一个数据,而在python代码中,可以创建任意多的变量,来进行各种各样数据的保存。

变量可以视为是一块能够容纳数据的空间, 这种空间往往对应到"内存"这样的硬件设备上。

我们可以把内存想象成是一个宿舍楼,这个宿舍楼有一个个的房间,每个房间都可以存放数据。

衡量内存的一个重要指标就是内存空间的大小,比如电脑的内存是16GB,这个数字越大,也就意味着内存的存储空间就越大,能够存放的数据(变量)也就越多。

变量的语法

(1)定义变量

a = 10

创建变量的语句非常简单,其中

  • a为变量名,当我们创建很多个变量的时候,就可以用名字来进行区分
  • = 为赋值运算符,表示把 = 右侧的数据存入 = 左侧的空间中

注意:变量的名字要遵守一定的规则

硬性规则(务必遵守)

  • 变量名由数字、字母、下划线构成
  • 数字不能作为开头
  • 变量名不能和“关键字”重复
  • 变量名大小写敏感,num和Num是两个不同的变量名

软性规则(建议遵守)

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

数学上,变量通常使用x, y, z这种简单的英文字母或者拉丁字母表示,但是在编程过程中不建议这样使用;

原因是,编程中一个程序通常会同时创建出很多个变量,如果只是使用单个字母来表示,在变量多的时候,就很难区分哪个变量是干什么用的,从而给维护程序带来了一定的困难;因此我们建议使用带有明确描述性的名字,来表示变量的用途。

(2)使用变量

读取变量的值

a = 10
print(a)

修改变量的值

a = 20
print(a)

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

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

a = 10
b = 20
a = b
print(a) #20
print(b) #20

变量的类型

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

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

(1)整数

a = 10
print(type(a))

PS:type和print类似,也是python的内置函数,可以使用type来查看一个变量的类型

注意:和C++/Java等语言不同,python的int类型变量,表示的数据范围是没有上限的,只要内存足够大,理论上就可以表示无穷大的数据。

(2)浮点数(小数)

a = 0.5
print(type(a))

注意:和C++/Java等语言不同,python的小数只有float一种类型,没有double类型,但是实际上python的float就相当于C++/Java的double,表示双精度的浮点数。

PS:相比于单精度浮点数,双精度浮点数占用的内存空间更多,同时表示的数据精度更高(大概精确到小数点后15位)

(3)字符串

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

使用 ’ ’ 或者 " " 引起来的,称为字符串,可以用来表示文本

注意:在python中,单引号构成的字符串和双引号构成的字符串没有区别,'hello’和"hello"是完全等价的。

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

a = 'hello'
print(len(a)) #5

可以使用 + 针对两个字符串进行拼接

a = 'hello'
b = 'world'
print(a + b)

此处是两个字符串相加,不能拿字符串和整数/浮点数相加

字符串作为开发中最常用的数据类型,支持的操作方式也是非常丰富的。

(4)布尔

布尔类型是一个特殊类型,取值只有两种,True和False

PS:布尔类型也是数学上的一个概念,初中的时候由一个概念叫做“命题”,进一步的可以判断命题的真假,True和False

例如:

  • 博主真帅(真命题)
  • 博主是个妹子(假命题)
a = True
print(type(a))
b = False
print(type(b))

布尔类型在进行逻辑判断的时候,是非常有用的。

为什么要有这么多类型?

除了上述提到的类型之外,python中海油list, tuple, dict等类型,后续会介绍。

(1)类型决定了数据在内存中占据多大空间

例如float类型在内存中占据8个字节

PS:计算机里面使用二进制来表示数据,也就是每个位只能表示0或1

1个二进制位,就称为一个“比特”,8个二进制位,就称为一个“字节”(Byte)

一个float变量在内存中占据8个字节的空间,也就是64个二进制位

假设一个电脑有16GB的内存,也就是一共有102410241024*8这么多的二进制位

(2)类型约定了能对这个变量进行什么样的操作

例如 int/float 类型的变量,可以进行 + - * / 等操作

而str类型的变量,只能进行 +(行为是字符串拼接), 不能进行 - * / ;但是还能使用len等其他操作。

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

动态类型特性

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

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

在程序执行过程中,a的类型刚开始是int,后面编程了str;

C++/Java这样的语言不允许这样的操作,一个变量定以后类型就是固定的了,这种特性称为”静态类型“

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

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

3.注释

注释是什么

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

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. 积极向上:注释中不能包含负能量(例如 领导SB)

4.输入输出

和用户交互

和用户进行交互时需要输入输出

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

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

pyCharm运行程序,下面弹出的窗口就是控制台:

windows自带的cmd程序,也可以视为控制台:

输入输出最常见方法是图形化界面,例如我们平时用到的QQ,浏览器,steam等,都不需要用户输入命令,而只是通过鼠标点击按钮的方式进行操作。

通过控制台输出

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

print('hello')

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

a = 10
print(a)

b = True
print(b)

更多的时候,我们希望能够输出的内容是混合了字符串和整数的。

示例:输出num = 10

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

注意:

  • 使用f作为前缀的字符串,称为f-string
  • 里面可以使用{ }来内嵌一个其他的变量/表达式

PS:python中还支持其他的格式化字符串的方法,此处是最简单的,其他的暂时不做介绍

通过控制台输入

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

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

注意:

  • input的参数相当于一个“提示信息”,也可以没有
  • input的返回值就是用户输入的内容,是字符串类型
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')

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

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

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

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

代码实例:输入4 个小数, 求4个小数的平均值

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}')

5.运算符

算术运算符

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

# //是一种除法向下取整的操作符
print(10 // 3) # 3

注意1:/中不能用0作为除数,否则会抛异常。

print(10 / 0)

异常是编程语言中的一种常见机制,表示程序运行过程中,出现了一些“以外情况”,导致程序不能继续向下执行下去。

注意2:整数/整数 结果可能是小数,而不会截断。

print(1/2) # 0.5

注意3: % 不是“百分数”,而是求余数

print(7 % 2) #1

关于求余数,很多人容易蒙,其实很简单:

7除以2,商是3,余数是1

注意4:**是求乘方,不光能算整数次方,还能算小数次方。

print(4 ** 2)
print(4 ** 0.5)

关系运算符

像 < <= > >= == != 这一系列的运算符称为关系运算符,它们是比较操作数之间的关系,其中

  • <= 是“小于等于”
  • = 是“大于等于”

  • == 是“等于”
  • != 是“不等于”

(1)如果关系符合,则表达式返回True,如果不符合,则表达式返回False

a = 10
b = 20

print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

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

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

注意:

  • 直接使用== 或 != 即可对字符串进行内容判定相等(和C++/Java不同)
  • 字符串比较大小,规则是“字典序”

关于字典序:

想象一个英文词典,上面的单词都是按照字母顺序排列,如果首个字母相同,就比较第二个字母

单词在词典上越靠前,就越小,越靠后,就越大

(3)对于浮点数来说,不要使用 == 判断相等

print(0.1 + 0.2 == 0.3)

注意:浮点数在计算机中的表示并不是准确的,在计算过程中,就容易出现非常小的误差。

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

可以看到 0.1 + 0.2 的结果并非0.3, 而是带了一个小尾巴,虽然这个尾巴非常小,但是 == 是非常严谨的,仍会导致 ==的结果为False

不止是python如此,主流编程语言都是如此,这个是IEEE754标准规定的浮点数个数所引入的问题。

正确的比较方式:不在严格的比较相等,而是判定差值小于允许的误差范围。

a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001)

实际工程实践中,误差在所难免,只要保证误差在合理范围内即可。

逻辑运算符

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

  • and并且,两侧操作数均为True时,最终结果为True, 否则为False(一假则假)
  • or或者,两侧操作数均为False时,最终结果为False,否则为True(一真则真)
  • not逻辑取反,操作数本身为True,则返回False,本身为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)

一种特殊的写法

a < b and b < c 这个操作等价于 a < b < c,这个设定和大部分编程语言都不相同

关于短路求职

和其他编程语言类似,python中也存在短路求值的规则

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

上述代码没有抛出异常,说明右侧的除以0操作没有真正执行

赋值运算符

(1) = 的使用

= 表示赋值,除此之外,还能同时针对多个变量进行赋值。

链式赋值

a = b = 10

多元赋值

a, b = 10, 20

代码示例: 交换两个变量

基础写法

a = 10
b = 20
tmp = a
a = b
b = tmp

基于多元赋值

a = 10
b = 20
a, b = b, a

(2)复合赋值运算符

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

其中a += 1等价于a = a + 1,其他的赋值运算符也是同理

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

注意:像C++/Java中,存在 ++ – 这样的自增/自减运算符,python中不支持这种运算,如果需要使用,可以直接使用 += 1或者 -= 1

++ – 最大的问题就是容易分不清前置和后置的区别,这一点python设计的时候就进行了规避,避免混淆语法

自测练习

(1) [多选] 以下关于变量之间加法运算的说法, 正确的是:

A. Python 中的字符串之间够能相加.

B. Python 中的字符串可以和整数相加.

C. Python 中的整数可以和浮点数相加.

D. Python 中的整数可以和布尔值相加.

(2) [单选] 以下关于类型的说法, 正确的是:

A. Python 中既有字符串类型, 也有字符类型.

B. Python 中既有 float, 也有 double.

C. Python 中既有 int, 也有 long

D. Python 中的整数表示范围无上限.

(3) [单选] 以下 Python 代码, 合法的是

A. int a = 10

B. a = 10;

C. a = true

D. a = 'aaa

答案:1.ACD 2.D 3.C

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

new出新对象

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

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

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

打赏作者

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

抵扣说明:

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

余额充值