上面这个图呢是这个教程的大体框架,是不是看着很多很复杂,没有关系,跟着我的文章思路一点一点学,并不是很难理解,相信大家都可以学会!
python是一种面向对象的编程语言,他有着非常简单的语法,作为解释型语言,哪怕你是一个完全没有接触过python的小白,也可以大概读懂这个程序50%以上的内容。
上一篇文章中,我们讲了python的环境配置以及vscode的安装,还写下了我们的第一个python文件输出hello world并将其运行,这篇文章呢,我们就进入了python基础语法的讲解,首先先来讲解一下最基础的知识
1、输入输出
我们都知道,python里有很多函数,还有很多第三方库,安装之后还可以引入标准库中没有的函数,这些我们放到后面再进行讲解,先来讲讲python最基础的两个函数,输入输出
这两个函数的语法都很简单(格式化输出的内容就不放在这里讲了,在后面讲到字符串的相关操作时再补充)
输入:input(要输入的内容)
输出:print(要输出的内容)
在这里放几个代码举例子吧,可以在vscode中自己建个python文件运行一下试试
单纯的想要输出一句话呢,我们只需要一个简单的print函数去输出,输出结果就是双引号中的内容,这里面可以是英文也可以是中文(python2x版本时print里如果是中文的话还需要在文件头加一个万国码,现在python3x的版本已经不需要啦)
print("你好世界")
或者也可以通过定义变量的方式
a="你好世界"
print(a)
#这段代码的输出结果就是你好世界
如果想要输出指定内容呢,就是先定义一个变量用来接收input的内容,然后再输出
a=input("")
print(a)
#运行这段代码,我们先在终端中输入你好世界,然后再按回车键,他就会输出一个你好世界
运行结果就是这样
在上面的代码中我们可以看到这样的一个符号——"#",这个符号在python中的意思是注释,#后的内容就是注释掉的内容,这部分在vscode中通常被标记为绿色,这是代码的不执行部分
写注释又有什么好处呢,对于编程小白来说也要自己学着慢慢写注释,对自己的代码进行解释说明,以易于别人理解,当然了,注释也可以方便大家在一段长的代码中找错,在一段报错的代码中,注释部分代码,不断运行调试,查找报错语句进行修改
大部分编译器都有一个共同的一键注释快捷键,当然vscode也是一样,我们选取想要注释的部分代码,按住Ctrl+/键就可以一键进行注释
2、变量
变量是什么呢,他就是存储在内存中的值,意味着在创建变量时会在内存中开辟一个空间。听起来是不是很抽象,其实很简单,创建变量也叫定义变量,就像你叫数学中的x,y一样,就是起了一个名字,python中的变量需要先赋值再使用,例如a=5,那么后边程序中的a就会自动代换成5的值进行运行了。
变量赋值
Python 中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号 = 用来给变量赋值。
等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。
例如:
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
再比如在上面第一节输入输出中给的那个代码实例中,a就是一个变量名,我们将input里的内容赋给了变量a,然后将其输出出来。
当然,这个a是我随便取得一个名字,在长代码或者大的项目中,我们起的变量名通常是具有一定意义的,易于人去理解和读取,我们常说,一个好的代码,不只是能跑,还要让别人能很容易的读懂和理解这段代码想实现的功能。在学习的过程中,也要养成良好的命名习惯,否则很有可能自己也看不懂自己的代码。
a=input("")
print(a)
#运行这段代码,我们先在终端中输入你好世界,然后再按回车键,他就会输出一个你好世界
标识符的命名规则
变量要符合标识符(名字)的命名规范,这是硬性要求。
标识符就是程序中某一元素的名字,可以是变量,也可以是关键字、函数、类、模块、对象,说通俗点,标识符就是以后给我们写的每个代码所起的名字,就好比我们每个人生下来都要起名字。除了关键字的名字是固定的,其它元素都可以根据标识符的命名规则进行命名。
大家都知道我们起名字都有一定的限制,那标识符也有他自己的命名规则
标识符由字母( A~Z , a~z )、数字(0-9)、以及下划线(_)组成。
(1)标识符的第一个字符必须是字母( A~Z , a~z )或下划线(_);
下面是几种命名示例,这都是规范要求内的命名:
Hello
apple
_max
_Min
(2)标识符的其它部分由字母( A~Z , a~z )、数字(0-9)或者下划线(_)组成;
示例:
Apple10
Apple_10
V_3_V
CON2_5
_Test_3
(3)标识符对大小写敏感;
这个是什么意思呢,举个例子,Apple和apple是两种不同的变量名,即使只差了一个字母的大小写,python也会对其进行区分
(4)不能使用关键字和保留字;
python中的关键字和保留字很多,我就不一一列举了,可以自行查找一下,这里举些例子,能理解就好,我们程序库中的函数名(例如input,print),if,while等语句关键字,都是不能作为自己命名的变量名去进行使用的
数据类型
在内存中存储的数据可以有多种类型。
例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。
Python 定义了一些数据类型,用于存储各种类型的数据。
基本数据类型
-
整数类型(int)
(1)整数可以是正整数、负整数或零。例如:1
、-5
、0
。
(2)整数类型在 Python 3 中没有大小限制,能够自动处理非常大的整数。如:123456789012345678901234567890
。 -
浮点数类型(float)
(1)用于表示带有小数部分的数字。例如:3.14
、-0.5
、1.0
。
(2)浮点数在计算机内部的存储方式可能会导致一些精度问题。比如:a = 0.1 + 0.2 print(a) #这个运行结果就不是0.3,而是0.30000000000000004
-
布尔类型(bool)只有两个值:
True
和False,
通常用于条件判断。 - 字符串类型(str)
- 用于表示文本数据。字符串可以使用单引号(
'
)、双引号("
)或三引号('''
或"""
)来定义。 - 例如:
'Hello'
、"World"
、'''This is a multi - line string.'''
。 - 字符串支持许多操作,如拼接(
+
)、重复(*
)、切片等。例如:a = "Hello" b = "World" c = a + " " + b print(c) #会输出Hello World
- 用于表示文本数据。字符串可以使用单引号(
容器数据类型
- 列表类型(list)
- 列表是一种有序的可变序列,可以包含不同类型的元素。列表使用方括号
[]
定义,元素之间用逗号分隔。 - 例如
[1, 2, 3, 'a', 'b']
。可以通过索引访问列表中的元素,也可以使用方法如append()
(在列表末尾添加元素)、insert()
(在指定位置插入元素)、remove()
(删除指定元素)等来修改列表。
- 列表是一种有序的可变序列,可以包含不同类型的元素。列表使用方括号
- 元组类型(tuple)
- 元组是一种有序的不可变序列,使用小括号
()
定义,元素之间用逗号分隔。例如(1, 2, 3)
。 - 由于元组是不可变的,所以一旦创建,就不能修改其元素。但是如果元组中的元素是可变类型(如列表),则可以修改这些可变元素。
- 元组是一种有序的不可变序列,使用小括号
- 集合类型(set)
- 集合是一种无序的、不包含重复元素的数据结构,使用花括号
{}
或set()
函数来创建。例如{1, 2, 3}
。 - 集合主要用于去重和数学集合运算,如交集(
&
)、并集(|
)、差集(-
)等。
- 集合是一种无序的、不包含重复元素的数据结构,使用花括号
- 字典类型(dict)
- 字典是一种无序的键 - 值对(key - value)数据结构,使用花括号
{}
定义,其中键和值之间用冒号:
分隔,键 - 值对之间用逗号分隔。 - 例如
{'name': 'Alice', 'age': 25, 'city': 'New York'}
。可以通过键来访问值,如my_dict['name']
获取'Alice'
。字典的键必须是不可变类型(如字符串、整数、元组等),值可以是任何类型。
- 字典是一种无序的键 - 值对(key - value)数据结构,使用花括号
关于这几种容器数据类型呢,在这里不用过多了解,先知道这么个概念就行了,在后面我会详细讲解的
类型转换
(1)字符串转整形:方法是 int(str) ,字符串必须是数字,例如:
key = int('114514')
print(key)
#这个输出结果就是114514
(2)浮点型转整型:方法是 int(float),例如:
f1 = 20.1
f2 = int(f1)
print(f2)
#这样的输出结果会直接抹去浮点数的小数部分,直接输出20
(3)字符串转浮点型:方法是 float(str) ,字符串必须是数字和,例如:
str_num = "3.14"
float_num = float(str_num)
print(float_num)
#如果字符串中包含非数字字符(除了小数点用于表示小数部分),转换时会抛出ValueError异常
(4)整型转浮点型:方法是 float(int) ,例如:
integer_num = 5
floating_num = float(integer_num)
print(floating_num)
#这段代码的输出结果就是5.0
当然,我们也可以直接在运算过程中进行转换,例如:
integer_num = 3
floating_num = 2.5
result = integer_num + floating_num
print(result)
#这里整数3和浮点数2.5相加,在运算过程中,整数3会自动转换为浮点数3.0,然后进行加法运算,结果为5.5
(5)浮点型转字符串:方法是 str(float) ,例如:
float_num = 3.14
str_num = str(float_num)
print(str_num)
#首先定义了一个浮点数3.14,然后使用str()函数将其转换为字符串"3.14",最后打印出转换后的字符串,输出结果即为3.14
(6)整型转字符串:方法是 str(int) ,例如:
integer_num = 123
str_num = str(integer_num)
print(str_num)
获取类型信息
1、使用type()函数
这里直接附上代码吧,相信直接看代码更能体会到这个函数的用法
i = 5
f = 3.14
s = "hello"
b = True
l = [1, 2, 3]
t = (4, 5, 6)
se = {7, 8, 9}
d = {'name': 'Alice', 'age': 25}
print(type(i))
print(type(f))
print(type(s))
print(type(b))
print(type(l))
print(type(t))
print(type(se))
print(type(d))
#上述程序的输出结果为:
#<class 'int'>
#<class 'float'>
#<class 'str'>
#<class 'bool'>
#<class 'list'>
#<class 'tuple'>
#<class 'set'>
#<class 'dict'>
2、使用isinstance()
函数
isinstance()
函数用于检查一个对象是否是某个特定类型(或其子类)的实例。它返回一个布尔值。下面给出使用示例:-
num = 10 print(isinstance(num, int)) print(isinstance(num, float)) #运行结果为:True # False
3、运算符
算术运算符
在这里直接附上一张表,通过这张表就可以很清晰的了解算术运算符是怎么用的了
随便给上几个代码示例吧:
a = 15
b = 16
c = a + b
print(c)
#输出结果为31
d = 17 - 6
print(d)
#输出结果为11
e = 5 * 3
print(e)
#输出结果为15
比较运算符
比较运算符包括==等于,!=不等于,>大于,<小于,>=大于等于和<=小于等于
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量 True 和 False 等价。以下假设变量 a 为10,变量 b 为20:
赋值运算符
赋值运算符包括:=,+=,-=,*=,/=,%=,**=,//=
下面还是通过表格直接说明每种赋值运算符的用法及含义
位运算符
这个感觉不是很重要,很少见到,了解即可
逻辑运算符
逻辑运算符一共有三种,and,or,not,很好理解,就是我们数学上说的且、或、非
这里给出几个简单的小示例:
age = 25
has_license = True
if age >= 18 and has_license:
print("可以合法开车。")
else:
print("不满足开车条件。")
#在这个示例中我们有两个条件:
#一个是年龄age是否大于等于18岁,另一个是是否拥有驾照has_license。
#只有当这两个条件都满足(即年龄达标且有驾照)时,才会输出可以合法开车。
#否则输出不满足开车条件。
has_math_talent = True
has_physics_talent = False
if has_math_talent or has_physics_talent:
print("这个学生可以参加竞赛。")
else:
print("这个学生不可以参加竞赛。")
#在这个例子中,has_math_talent为True,has_physics_talent为False
#使用or运算符判断,只要两个条件中有一个为True,整个条件表达式就为True
#所以这段代码的输出结果为这个学生可以参加竞赛
my_list = [1, 2, 3]
if not 4 in my_list:
print("数字4不在列表中。")
else:
print("数字4在列表中。")
#这里先定义了一个列表my_list,然后通过not运算符结合in语句来判断数字4是否不在列表中
#因为4确实不在列表my_list中,所以 not 4 in my_list这个表达式的值为True
#最终会输出数字4不在列表中。
成员运算符
这个很简单,就不多赘述了,示例用法的话就跟上面逻辑运算符的最后一个代码示例相同
身份运算符
(1)身份运算符是 Python 用来判断的两个对象的存储单元是否相同的一种运算符号,身份运算符只有 is 和 is not 两个运算符,返回的结果都是 True 或者 False:
a = 1
b = 2
c = a
print(a is b)
print(a is c)
#这段代码的输出结果为:False
# True
(2)is和==的区别:is是在判断两个变量引用对象是否为同一个,而==是在判断引用变量的值是否相等。
a = [0, 1, 2]
b = [1-1, 2-1, 3-1]
c = a
print(a is b)
print(a is c)
print(b is c)
print(a is b is c)
print(a == b == c)
#这里不知道怎么解释能好一些,那就直接附上一段代码
#我们可以通过这段代码的输出结果来体会一下这两个用法的不同
#输出结果为:False
# True
# False
# False
# True
运算符的优先级
结合性就是当一个表达式中出现多个优先级相同的运算符时,先执行哪个运算符:先执行左边的叫左结合性,先执行右边的叫右结合性。例如对于表达式对于 100 / 25 * 5,/ 和 * 的优先级相同,这个时候就不能只依赖运算符优先级决定了,还要参考运算符的结合性。/ 和 * 都具有左结合性,因此先执行左边的除法,再执行右边的乘法,所以返回的最终结果是20。
这篇文章就先写到这里啦,python的基础语法还没有讲完,我放在后面的博客里去讲解,可以订阅我的专栏获取最新的更新,这几天更新都会比较快,希望可以给个三连支持一下,如果有什么问题或者发现我这哪里写的不对,欢迎在评论区指点出来~