一、 Python发展历史
- 起源
Python的作者是著名的“龟叔”Guido van Rossum,他希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。龟叔从ABC语言看到希望,ABC语言是由荷兰的数学和计算机研究所开发的。龟叔也参与到ABC语言的开发。由于一系列原因ABC并没有快速传播使用。因此,龟叔开始写Python语言。 - 诞生
1989年,龟叔为了打发无聊的圣诞节,开始编写Python语言。1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。 - 启示
Python从刚开始龟叔给它定位就是“优雅 ”,“明确”,“简单”,所以Python程序看上去总是简单易懂。Python现在在TIOBE的排行榜中呈上升趋势。
荣登2018年TIOBE年度最佳编程语言,很多大公司,包括google、Yahoo甚至NASA都大量的使用Python。每个语言都是混合体,都有它优秀的地方,但是也有缺陷。同时一个语言的好坏,往往还受制于硬件、平台、时代等等外部原因。以一个开放的心态来接受各个语言。说不定哪一天,你也可以像龟叔一样,混合出自己的语言
官 网:https://www.python.org/
安装Python解释器
注意将Add Python 3.6 to PATH 勾选
集成开发环境 IDE
我们使用Pycharm
下载地址:http://www.jetbrains.com/pycharm
在Pycharm上运行第一个Python应用程序
- 输出自己的名字
name = input ('亲输入您的名字')
print('你的名字是:', name)
if-else判断语句
格式
if 要判断的条件:
条件成立时,要做的事情
else:
不满足条件时要做的事情
- Demo
age = input('请输入您的年龄')
age = int(age)
if age >= 18:
print("你已经成年了,可以去网吧了")
else:
print("对不起,你还是个宝宝")
elif
格式:
if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
else:
事情3
elif必须和if一起使用,否则出错
- Demo2
查找水仙花数
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
# 查找水仙花数
num = 163
i = int(num / 100) # 取百位
print(i)
j = int(num / 10 % 10) # 取十位
print(j)
k = int(num % 10)
print(k) # 取个位
result = i * i * i + j * j * j + k * k * k
print(result)
if result == num:
print('是水仙花数')
else:
print('不是水仙花')
循环
一般情况下,需要多次重复执行的代码,都可以用循环的方式来完成
for循环
- for循环的格式:
for 临时变量 in 列表或者字符串等:
循环满足条件时执行的代码
name = 'neusoft'
for x in name:
print(x)
- demo2
for i in range(100):
print('老婆这是我对你说第{}次对不起了'.format(i))
字符串
双引号或者单引号中的数据,就是字符串
- 下标
所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间
name = 'abcdef'
print(name[0])
-
切片
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。切片的语法:[起始:结束:步长]
注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。
我们以字符串为例讲解。
name = 'abcdef'
print(name[0:5]) # 取 下标为0~4 的字符
print(name[2:]) # 取 下标为2开始到最后的字符
print(name[1:-1]) # 取 下标为1开始 到 最后第2个之间的字符 bcde
print(name[[5:1:-2) ] # fd
列表
比C语言的数组强大的地方在于列表中的元素可以是不同类型的
- 创建及访问,遍历
namesList = ['xiaoWang','xiaoZhang','xiaoHua',111]
print(namesList)
print(namesList [0])
for name in namesList:
print(name)
- 列表的相关操作
1.添加元素
通过append可以向列表添加元素
skills = ['河豚手雷', '无敌鲨嘴炮', '空中支援']
skills.append('火力压制')
print(skills)
2.删除
skills = ['河豚手雷', '无敌鲨嘴炮', '空中支援']
skills.append('火力压制')
print('before', skills)
del skills[3]
print('after', skills)
3.修改
skills = ['河豚手雷', '无敌鲨嘴炮', '空中支援']
skills.append('火力压制')
print('before', skills)
skills[3] = 'piupiupiu'
print('after', skills)
- 查找
in(存在),如果存在那么结果为true,否则为false
not in(不存在),如果不存在那么结果为true,否则false
skills = ['河豚手雷', '无敌鲨嘴炮', '空中支援']
find_skill = '河豚手雷'
if find_skill in skills:
print('该技能存在')
- 拓展:列表推导式
元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
- 访问
a_skills = ('河豚手雷', '无敌鲨嘴炮', '空中支援',1000)
print(a_skills[0])
- 修改会报错
a_skills = ('河豚手雷', '无敌鲨嘴炮', '空中支援',1000)
a_skills[0] = 1111
TypeError: 'tuple' object does not support item assignment
只有一个元素的元组
a_skills = (1000,)
字典
字典和列表一样,也能够存储多个数据
列表中找某个元素时,是根据下标进行的
- 创建及访问
hero = {'name': '伽罗', 'grade': 13, 'type': '射手'}
print(hero['name'])
若访问不存在的键,则会报错:
在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值
hero = {'name': '伽罗', 'grade': 13, 'type': '射手'}
mingwen = hero.get('mingwen', '治疗') # 返回默认值'治疗'
print(hero)
print(mingwen)
- 修改
hero = {'name': '伽罗', 'grade': 13, 'type': '射手'}
hero['grade'] = 15
print(hero)
- 添加
如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
hero = {'name': '伽罗', 'grade': 13, 'type': '射手'}
hero['mingwen'] = '闪现'
print(hero)
- 删除
- del
hero = {'name': '伽罗', 'grade': 13, 'type': '射手'}
hero['mingwen'] = '闪现'
print(hero)
del hero['mingwen']
print(hero)
- clear
hero = {'name': '伽罗', 'grade': 13, 'type': '射手'}
hero['mingwen'] = '闪现'
print(hero)
hero.clear()
print(hero)
print(type(hero))
字典的常见操作
- len()测量字典中,键值对的个数
- keys 返回一个包含字典所有KEY的列表
3.values 返回一个包含字典所有value的列表
4.items 返回一个包含所有(键,值)元祖的列表
函数
如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数
- 定义函数的格式如下:
def 函数名():
代码
通过 函数名() 即可完成调用
- 例子: 计算1~num的累加和
# 计算1~num的累加和
def caculateNum(num):
result = 0
for i in range(1, num+1):
result = result+i
result += i
return result
res = caculateNum(100)
print(res)
匿名函数
用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
sum = lambda arg1, arg2: arg1 + arg2
#调用sum函数
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )
Lambda函数能接收任何数量的参数但只能返回一个表达式的值
匿名函数不能直接调用print,因为lambda需要一个表达式
- 作为内置函数的参数
stus = [
{"name":"zhangsan", "age":18},
{"name":"lisi", "age":19},
{"name":"wangwu", "age":17}
]
stus.sort(key = lambda x:x['name'])
stus.sort(key = lambda x:x['age'])
作业 :
找到所有的水仙花数