初识Python
什么是Python
Python是1门程序设计语言。在开发者眼里,语言可以分为3类:
- 自然语言:人能听懂的语言,例如汉语,英语,法语等等。
- 机器语言:机器能听懂的语言,机器只能听懂0和1。
- 程序设计语言:机器能够听懂,人能听懂的语言,例如Python,C,C++ 、C# 、Java等等。
同样的,在开发者眼里还可以分为高级程序设计语言和低级程序设计语言。越接近于人类的语言越高级,例如Python;越接近于机器语言越低级,例如汇编就属于低级程序员设计语言。
简而言之,python是一门高级的编程语言,而且随着人工智能的兴起,python在编程领域所占的权重是越来越大了,现在市场份额排名第一,未来的发展潜力也是巨大的,非常得到学习
编程市场份额排行榜:https://www.tiobe.com/tiobe-index/
Python的特点
Python的特点主要有语法简洁、类库强大、胶水语言(调用其他语言的类库)、代码量较少等特点
Python 运行机制
程序运行主要有两种机制:编译型和解释型。
编译型:是将代码(源文件)通过编译器,编译成机器码文件,当运行的时候直接执行机器码文件,例如C语言;
解释型:是将源文件通过解释器,逐行进行翻译并运行
编译型和解释型语言各有优缺点:
- 解释型:
缺点:执行慢
优点:可以跨平台(操作系统)
- 编译型:
缺点:不能跨平台
优点:执行快
很显然,python是解析型语言,因为我们运行python的时候,Python 程序在执行时不需要预先编译成机器语言代码
什么是字面量
在代码中,被写下来的固定的值(数据),叫做字面量
简单点说就是代码写下来你就知道它是代表什么,比如10 代表整数 true 代表布尔类型等等;想python中的基本数据类型都可以看作是字面量
"abcd"
1
3.6
python中的基本数据类型
数值型(Number)
# 1 数字类型 整数,浮点数,复数,布尔四个类型
# 定义一个整数
a = 100
#浮点数
b = 99.9
#复数(必须是以j结尾)
c=3+4j
#boolean类型
d = True
字符串(string)
# 2 字符串
#单引号
e = '6666'
#双引号
f = "8888"
#三引号 三引号也可以当多行注释来使用
g = """99999"""
#常用方法
# 获取字符串长度
print(len(f))
string = " Hello, World! "
print(string.strip()) # 输出:Hello, World!
string = "Hello, World!"
words = string.split(", ")
print(words) # 输出:['Hello', 'World!']
list_val = ['www','baidu','com']
str_val = '.'.join(list_val)
print(str_val) # www.baidu.com
字符串格式化(模板字符串)
# 三种常见的字符串的格式化 ,前二种开发中常用
# 1.%-formatting
name = 'Aaron'
login_time = 10
cost = 258.88
print('你好%s,欢迎登录!这是您登录的第%d次。您本次消费%.2f元' % (name,login_time,cost))
# 2.f-string
name = 'Aaron'
login_time = 10
cost = 258.8890
print(f'你好{name},欢迎登录!这是您登录的第{login_time}次。您本次消费{cost:.2f}元。')
# 3.str.format()
name = 'Aaron'
login_time = 10
cost = 258.8890
print('你好{},欢迎登录!这是您登录的第{}次。您本次消费{:.2f}元。'.format(name,login_time,cost))
列表(list)
类似于java中的arraylist集合
# 3 列表 类似于java的list集合 但python中没有泛型的概念
#定义一个空列表
h = []
i = list()
#定义一个有数据的列表
j = [666,888,'9999']
j.append(999)
# print(j)
元组(tuple)
# 4 元组 类似于java中的数组
#特点:1 不能直接修改元组的内容,否则直接报错 2 可以修改元组中列表的内容 3 元组只有一个数据,这个数据后面要添加逗号
#定义一个空原组
k = ()
l = tuple()
#定义非空元组
m = (6666,888,'999')
n = (66666,9999,[1,2,3])
n[2][0]=10
# print(n)
集合(set)
# 5 set 和java的set集合类似,无序不可重复
#定义一个空集合
p = set()
#定义一个有数据的集合
q = {666,888,999,666}
# print(q)
xxx = len(q)
# print(xxx)
print(max(q))
print(min(q))
字典(dictionary)
# 6 dict字典 与java中的map集合类似 key:value的结构
# 定义一个空字典
r = {}
s = dict()
#定义有数据的字典
t = {'name':'李四','age':18,'hobby':('篮球','跑步','听歌')}
t['gender'] = '男'
print(t)
print(t['name'])
序列
# 7 序列
# 特点:1 序列不是一种数据类型,而是一种特殊的数据结构
# 2 序列是指:内容连续、有序,可使用下标索引的一类数据容器
# 3 列表、元组、字符串,均可以可以视为序列
# 得到列表序列的切片
# 序列[起始下标:结束下标:步长]
# 表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列
u =[1,2,3,4,5]
v = u[1:4]
# print(v) #[2, 3, 4]
# 得到元组的序列切片
w = (1,2,3,4,5)
x = w[0:3]
print(x) #(1, 2, 3)
# 得到字符串的切片
y = "123456"
z = y[3:-1]
print(z) #45
变量
什么是变量
变量:在程序运行时,能储存计算结果或能表示值的抽象概念。
简单的说,变量就是在程序运行时,记录数据用的
变量的格式
变量名 = 类型
python常用的内置函数 (重点)
print函数
结构:print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
objects:要打印输出的数据
sep=' ':表示以引号内的内容作为分隔符,默认是空格
end='\n':用于控制是否换行,默认是换换行
file:必须是一个具有 write(string) 方法的对象;如果参数不存在或为 None,则将使用 sys.stdout
flush=False:输出是否缓存通常取决于 file,但如果 flush 关键字参数为 True,输出流会被强制刷新
print后的括号中如果是数学表达式,则打印结果为表达式最终运算的结果
print(1+2+3+4+5) #15
print(2*4) #8
type()函数
我们可以通过type()语句来得到数据的类型
语法:type(被查看类型的数据)
运行结果
int函数,float函数,str函数
类型转换注意事项:
1. 任何类型,都可以通过str(),转换成字符串
2. 字符串内必须真的是数字,才可以将字符串转换为数字
input()函数
• 使用 input() 语句可以从键盘获取输入
• 使用一个变量接收(存储) input 语句获取的键盘输入数据即可
• 要注意,无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型
name = input("请输入你的名字:")
age = input('请输入你的年龄:')print(f'用户名: {name} 年龄: {age}')print(type(name))
print(type(age))
Python语句(重点)
判断语句
if语句
语法:
if 判断条件:
执行语句
- 当判断条件成立时,会执行执行语句的代码
- 判断条件可以加括号也可以不加,但后面的冒号不能省略
if ....else....语句
语法:
if 判断条件 :
满足条件执行的语句
else:
不满足条件执行的语句
• if 和其代码块,条件满足时执行
• else 搭配 if 的判断条件,当不满足的时候执行
if elif else语句
语法:
if 条件一:
满足条件一的执行语句1
满足条件一的执行语句2
...省略...
elif 条件二:
满足条件二的执行语句1
满足条件二的执行语句2
...省略...
elif 条件三:
满足条件三的执行语句1
满足条件三的执行语句2
...省略...
else:
不满足条件的执行语句1
不满足条件的执行语句2
...省略...
year = input("请输入一个年份: ")
year = int(year)if year % 4 == 0 and year % 100 != 0:print("%d 是一个普通闰年" %(year))
elif year % 400 == 0:print("%d 是世纪闰年" % (year))
else:print("%d 不是闰年" % (year))
语句嵌套:
就是在if 语句里面也可以嵌套if..else..或者if ..elif...else,同理在if..else里面也可以嵌套if 和if ..elif...else
age = 18
university = None
total_score = 700
if age > 16:if total_score > 680:print('你可以选择c9大学')university = '北京大学'if university is None:print('很遗憾,你没有考上大学')else:print(f'恭喜你啦,成功考上了 {university}')elif total_score > 600:print('你有机会上211')elif total_score > 500:print('你有机会上一本')elif total_score > 380:print('你有机会上二本')else:print('很遗憾,你的选择很有限,只能上专科和技校')
Python的循环语句
while循环 (和java的用法几乎一样)
语法:
while 条件:
执行语句1
执行语句2
...省略...
- 执行顺序: 判断条件 ——》 条件成立 -》 执行语句1 -》执行语句2 ->在重新判断条件
- 每次进入循环后,将执行语句全部执行完毕后再次来到判断,如果条件依然成立,则继续进入循环,以此类推,直到条件不成立,跳出循环
注意:
• 条件需提供布尔类型结果, True 继续, False 停止
• 空格缩进不能忘
• 请规划好循环终止条件,否则将无限循环
for循环(用法和java有点区别)
语法:
for 临时变量 in 迭代数据集:
执行语句
java版: for (int i = 0 ;i<100;i++){执行语句}
迭代数据集可以只字符串,也可以列表,字典,元组等
# 打印99乘法表
for i in range(1,10):for j in range(1,i+1):print(str(j)+"*"+str(i)+"="+str(i*j)+" ",end="\t")print()
continue
continue关键字用于:中断本次循环,直接进入下一次循环
continue可以用于: for循环和while循环,效果一致
break
可以直接跳出本次循环
函数(重点)
什么是函数?
函数其实就是一段为了实现特定功能且可以重复使用的代码块
语法
def 函数名 (参数):
函数体
return 返回值
注意:
- 参数如不需要,可以省略
- 返回值如不需要,可以省略
- 函数必须先定义后使用
- 如果函数没有定义返回值类型,默认返回None这个类型
# 定义函数
def sum(num1,num2):return num1+num2# 使用函数
print(sum(6,8))
知识扩展:
Python中有一个特殊的字面量:None,其类型是:<class 'NoneType'>
无返回值的函数,实际上就是返回了:None这个字面量
None表示:空的、无实际意义的意思
函数返回的None,就表示,这个函数没有返回什么有意义的内容。
也就是返回了空的意思。
函数的说明文档
简单点说就是函数的说明文档,表明函数如何使用,有怎么左右,鼠标悬停时可以看到的内容
通过多行注释的形式,对函数进行说明解释
# 定义带说明文档的函数
def calculate(num1,num2,operation):"""num1: 数字1 (一个number类型)num2: 数字2 (一个number类型)operation: 字符串操作类型,支持 + - * / 这四种类型retuen: 返回一个计算结果"""result = Noneif operation == '+':result = num1+ num2if operation == '-':result = num1- num2if operation == '*':result = num1* num2if operation == '/':result = num1/ num2return resultprint(calculate(6,6,'-'))
变量的作用域(重点):
变量的作用域:简单说就是变量可以被访问的范
注意:变量的作用域这个其实是非常重点的,难度也不低,需要注意的地方很多,细节也很多,需要自己不断积累的;不管是哪一门编程语言,我们都应该对变量的访问范围有清晰的认知,这样我们才可以更好的掌控程序
局部变量
所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
细节:python中有一个特点,就是定义在函数中的变量在整个函数内都是可以被访问到的,这个和java有点不一样,java的变量的访问范围受修饰符(publish,private...)和块决定
try{
int xx = 100
// 可能会发生异常的逻辑 throw new Exception();
}
catch(IOException e){
system.out.println(xx) //在这里是无法访问xx的
// 发生IOException时,执行此代码块
}
全局变量
所谓全局变量,指的是在函数体内、外都能生效的变量
在python中,全局变量其实就是定义在脚本最外层的变量(类似于java中的类属性)
就近原则:当全局变量和局部变量发生冲突时,优先使用局部变量
global 关键字
使用 global关键字 可以在函数内部声明变量为全局变量, 如下所示
若不声明,则num = 100 因为: 当全局变量和局部变量发生冲突时,优先使用局部变量