一、Python简介
1.Python历史
Python正式诞生于1991年,作者是Guido van Rossum(龟叔)
Python的解释器如今有多个语言实现,我们常用的是CPython
Python版本:python2 python3
2.Python语言的起源
3.Python中的数据类型
特点:即拿即用,无需提前申明
强制类型转换:数据类型转换, 本身不发生类型转换
格式:需要转换的类型(变量名)
a = 10str(a) #将a转换成字符串类型
注:查看变量的类型------type函数
格式: type(变量名)
4.Python中的标识符与关键字
标识符: 程序员自己定义的一些符号. 比如 变量名与 函数名
关键字: 语言赋予了一些词语的特殊意义.
标识符命名规范:
1.由数字,字母下划线组成,并且数字不能开头
2.不能和关键字重合
3.见名知意
4.驼峰命名法:
大驼峰: 每一个单词的首字母大写 eg: SchoolName : 都是类
小驼峰: 第一个单词的首字母小写,其他的单词首字母大写 eg: schoolName: 变量名 函数名
5.通过下划线链接. linux 命名方式.
关键字:
'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'
5.Python中的运算符
①算数运算符:+(加) , - (减) , *(乘) , ** (幂) , / (除) , // (整除) , % (取余) , ^ (异或) 没有++ , --
②关系运算符:> (大于) , < (小于) , >= (大于等于) , <= (小于等于) , == (等于) , != (不等于)
③赋值运算符: = (赋值) , += (a += b <==> a = a + b) , -=, *= ...
④逻辑运算符:and (与) , or (或) , not (非)
注:标红的地方是与C语言不同的地方。
同时给多个变量赋值a , b = 10, 20 # 给 a 赋值 10, 给 b 赋值 20 交换两个变量的值<1>. 三杯水交换a = 5 b = 10 c = a a = b b = c<2>. 不申请变量a = a + b b = a - ba = a - b <3>. 异或 : 异或与顺序无关, 异或连个相同的值为 0 a = a ^ bb = a ^ b a = a ^ b eg: 1 ^ 2 ^2 ^ 5 ^ 6 ^ 1 ^ 6 = 5延伸: 面试题: 单身狗 在数组中寻找只出现一个的哪个数字, 时间复杂度 O(n)python中交换两个变量的值: a , b = b, a
6.Python 第一个程序(hello world)
①环境:python3.6解释器 + pycharm 编辑器
②编写 hello world(仅需一行!)
# C语言"""#include <stdio.h>int main(){printf("hello world\n");return 0;}"""# pythonprint("hello world") # print是自动换行的
③执行hello world
右击 ==> run "hello world.py "
快捷键:ctrl + shift + F10
二、python的基础语法
1.注释
单行注释: # 后面的内容都是单行注释.
多行注释: 三引号之间的内容 就是多行注释 ; 快捷方式: ctrl + /
注: python 中单引号与双引号没有任何区别
2.输入输出语句
①输出:print
# 1.python变量直接输出 name = "懒羊羊"age = 5 print(name)# 2.格式化输出name = "懒羊羊"age = 5print("my name is %s, age is %d" %(name, age))# format函数输出name = "懒羊羊"age = 5print("my name is {}, age is {}".format(name, name))# 3.print在同一行输出 print(name, end="\n") # end 里面默认是"\n" 所有才可以换行 print(age)
②输入:input
格式:input("提示内容 :")
注:无论输入任何类型的数据,最终都会以字符串的形式展示.
password = input("please input your password >>> ")print(type(password))
3.判断语句
①if 语句:当条件condition满足的时候,会执行代码 code 的内容.
格式:if condition(条件):
(Tab) code(代码段)
②if / else语句:当条件condition满足的时候,执行code1, 当条件不满足的时候,执行code2.
格式:if condition:
code1
else:
code2
③if / elif / else语句
格式:if condition1:
code1
elseif condition2:
code2
......
elseif conditionn:
coden
else:
code
示例:
# 从键盘上输入考试成绩. 85 -- 100 A 75 -- 84 B 剩下的是 Cscore = int(input("请输入您的成绩 >>> "))if 85 <= score <= 100:print("A")elif score >= 75 and score < 85:print("B")else:print("C")
4.循环语句
目标: 只要符合条件,就完成某件事情, 直到条件不符合为止.
①while语句:一直执行code代码,直到 condition不满足的时候跳出循环
格式:while condition:
code
示例:
# 从键盘是输入一个数字, 判断一下它最少经过几步就可以变成一个斐波那契数字.f1 = 1 f2 = 1f3 = 0number = int(input("请输入数据 >>>"))while True:if number == f2:print("0")break elif number < f2: if abs(f2 - number) > abs(f1 - number):print(abs(f1 - number))else:print(abs(f2 - number)) break else:f3 = f1 + f2 f1 = f2f2 = f3
②for语句
格式:for 临时变量 in 字符串, 列表, 元组, 字典等可迭代的对象:
code
示例:
# 遍历数据mystr = "hello world"mylist = [1, 2, 3, 4, 5, 6]for i in mylist:print(i)
③break与continue
break:终止循环
continue:跳出本次循环
三、字符串 string
1.定义
字符串: 在引号之间的内容。 字符串是不可以被修改的.
如:mystr = "hello world"
2.字符串的访问
①下标:从左到右, 下标从0 开始
从右到左, 下标从-1 开始
如:mystr[0] 字符串中的第一个元素
mystr[-1] 字符串中的最后一个元素
②切片:访问原有数据当中的一部分数据内容.
格式:变量名[初始位置 : 终止位置 : 步长]
初始位置: 默认值 0
终止位置: 默认值 字符串的长度
步长 : 默认为 1
特点:左闭右开 [ )
# 练习题:s = 'Hello World!' #leetcode# 取出所有元素(没有起始位和结束位之分),默认步长为1print(s[::])# 从下标为1开始,取出 后面所有的元素(没有结束位)print(s[1::])# 从起始位置开始,取到 下标为5的前一个元素(不包括结束位本身)print(s[1:5:1])# 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)print(s[:-1:1])# 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)print(s[-4:-1:1])# 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)print(s[1:5:2])# python 字符串快速逆置 从后向前,按步长为1进行取值print(s[::-1])
3.字符串的基本操作
①运算符家族
+ : 字符串的拼接
* : 字符串的复制
==: 比较两个字符串是否相等
len(): 计算字符串长度
示例:
src = "hello world hello python"src * 3 : 字符串复制src + src : 字符串拼接print(len(src))
②查询家族:在源字符串中, 查找子字符串的位置
find : 查找到: 返回子字符串在源字符串中的位置,查找不到: 返回-1
rfind : r(right): 从右向左查找子字符串的位置,查找到: 返回子字符串在源字符串中的位置. 查找不到: 返回-1
index : success: 原字符串中子字符串的下标,error: 报错
rindex : 从右往左查找. success: 原字符串中子字符串的下标,error: 报错
示例:
# 网络协议的判断src = "/"pos = src.find("://")# 判断协议if src[:pos] == "https":print("https 协议")else:print("其他协议")# 文件类型的判断src = "i.love.study.txt.cpp.so.php.c" # pos = src.rfind(".")pos = src.rindex(".1")if src[pos + 1:] == "c":print("c")
③转换家族:对字符串进行大小写的转换
upper : 将字符串中的小写字母,全部转换为大写字母.其他类型的数据不会进行任何改变
lower : 将字符串中的大写字母,全部转换为小写字母, 并且其他数据类型不会发生改变.
title : 将字符串中的每一个单词的首字母进行大写
示例:
# 小写转大写src = "hello world123"ret = src.upper()print("ret = ", ret)# 运行结果 ret = HELLO WORLD123# 大写转小写src = "HELLO WORLD123"ret = src.lower()print("ret = ", ret)# 运行结果 ret = hello world123# 首字母大写src = "hello world"ret = src.title()print("ret = ", ret)# 运行结果 ret = Hello World
④判断家族:对字符串进行判断. 返回值: bool (True or False)
startswith : 判断字符串是否以 子字符串 开始
endswith: 判断源字符串是否以子字符串结尾
isdigit : 判断字符串是否全部由数字组成
isalpha: 判断字符串是否全部由字母组成
isalnum : 判断字符串是否全部由数字或者字母组成
isspace: 判断字符串是否全部由空格组成
示例:
# 验证邮箱email = input("从键盘中输入需要注册的邮箱 >>> ")if email.startswith("zhangts") and email.endswith("@"): print("身份验证成功!!")else:print("身份验证失败!!")# 判断全数字src = "0123456789"if src.isdigit():print("字符串全部由数字组成")
⑤字符串分割:对字符串数据进行分割处理
split : 将源字符串按照子字符串的内容进行分割.并且子字符串不在分割内容内,返回值:列表
splitlines :将源字符串按照行来进行分割,返回值: 分割好数据的列表
partiton: 将原字符串 按照 子字符串分割成3部分,返回值: 元组
rpartition : 从右向左 将原字符串 按照 子字符串分割成3部分,返回值: 元组
示例:
# 将字符串按照 hello cpp 进行分割src = "hello python hello cpp hello c"ret = src.split("hello cpp")print(ret)# 运行结果 ['hello python ', ' hello c']# 将字符串按行进行分割src = "hello\npython\nhello\ncpp\nhello c"ret = src.splitlines()print(ret)# 运行结果 ['hello', 'python', 'hello', 'cpp', 'hello c']# 将原字符串按照python分割成3部分src = "hello world hello python hello cpp hello cc "ret = src.partition("python")print(ret)# 运行结果 ['hello world hello ', 'python', ' hello cpp hello cc ']
⑥孤儿家族
count : 统计在原字符串中,字字符串出现的次数.
join : 将列表中的字符串依次链接起来.
示例:
# 统计一下 hello 出现的次数src = "hello world hello python hello cpp hello cc "ret = src.count("hello")print("ret = ", ret)# 将hello与world中间用+连接l1 = ["hello", "world"]ret = "+".join(l1)print(ret)
四、列表 list
1.定义
列表可以看做容器,存放任意数据类型. [ int, bool, string, list, tuple , dict]
如:l1 = [100, "hello world", True, [1, 2, 3, 4, 5]]
2.访问
列表也是支持下标与切片的.
如:l1 = [100, "hello world", True, [1, 2, 3, 4, 5]]
print(l1[-1][2]) # 访问数字3
3.排序
练习:将上面的月份使用冒泡排序,从小到大排序
month = [1, 3, 5, 7, 8, 10, 12, 4, 6, 9, 11, 2]count = 0i = 0while i < len(month) - 1:j = 0flag = 0while j < len(month) - 1 - i:if month[j] > month[j + 1]:month[j], month[j + 1] = month[j + 1], month[j]flag = 1j += 1count += 1if flag == 0:breaki += 1print(count)
sort 接口:对列表进行排序处理.
示例:
month = [1, 3, 5, 7, 8, 10, 12, 4, 6, 9, 11, 2]month.sort(reverse=True)print(month)
4.列表数据的增删改查
①列表的增加
append : 将元素对象,尾部添加到列表中.
insert : 指定位置, 插入数据对象
extend : 将一个列表中的元素依次加入到另一个列表中 (尾部插入)
示例:
home = ["荀彧", "郭嘉", "司马懿"]home.append("典韦")home.insert(3, "夏侯惇")house = ["杨玉环", "武则天"]home.extend(house)print(home)#结果 ['荀彧', '郭嘉', '司马懿', '夏侯惇', '典韦', '杨玉环', '武则天']
②列表的修改
格式:列表[下标] = value
如:home[5] = "小乔"
③列表的删除
del : 根据列表的下标进行删除,如果忘记给出下标会删除整个变量.
pop : 根据下标进行删除,默认是从尾部删除
remove:根据列表中的值进行删除.
示例:
# 删除黄月英home = ['荀彧', '郭嘉', '司马懿', '夏侯惇', '典韦', '黄月英', '武则天']# del home[6]# home.pop(6)home.remove("黄月英")
④列表的查找
in : 是否在列表中,返回值: bool 类型
not in : 是否不在列表中,返回值: bool 类型
count : 统计列表中出现的指定元素的个数
示例:
house = ["杨玉环", "武则天", "上官婉儿","小乔","小乔","小乔"]print("貂蝉" in house) # Falseprint("貂蝉" not in house) # Trueprint(house.count("小乔")) # 3
五、元组 tuple
1.定义
元组也是一个容器. (int, float, tuple, list, dict , bool).元组内部的值是不可以修改的.
2.访问
元组也是支持下标与切片
3.查找
in : 是否在元组中,返回值: bool 类型
not in : 是否不在元组中,返回值: bool 类型
count : 统计元组中出现的指定元素的个数
示例:
house = ("杨玉环", "武则天", "上官婉儿","小乔","小乔","小乔")print("貂蝉" in house) # Falseprint("貂蝉" not in house) # Trueprint(house.count("小乔")) # 3
六、字典 dictionary
1.定义
使用 { }进行定义,里面以键值对儿存在的数据:info = { key : value, key1 : value1}
如:info = {"name": "野原新之助", "age": 5}
2.访问
①通过dict[key]访问
格式: dict[key]
注: 当key不存在的时候,访问会报错
②通过get函数访问
格式: dict.get(key)
注: 当 key 不存在的时候, 会返回 None
示例:
# 蜡笔小新info = {"name": "野原新之助", "age": 5}print("my name is {}, age is {}".format(info["name"], info["hobby"])) # 报错print("my name is {}, age is {}".format(info.get("name"), info.get("hobby")))
3.字典的增删改查
①字典的增加
格式: dic[new_key] = value
如:info["father"] = "幼儿园园长"
②字典的修改
格式: dic[old_key] = new_value
如:info["father"] = "野原广志"
③字典的删除(通过字典的 key进行删除)
格式: del dic[key]
如:del info["father"]
④字典的查找
keys: 返回字典中所有的键
values: 返回字典中所有的值
items: 返回字典中所有的键值对儿
如:for key, value in info.items():
print(key, value)
⑤清空字典(清空字典中的所有键值对儿)
格式:dic.clear()
如:info.clear()
拓展:集合
1.定义:{ } 里面存放的是字符串或者数字, 或者布尔类型.或者元组.
注:集合当中的值是无序的. 集合中的值没有重复元素.
2.集合的删除------pop(): 在集合中随机删除一个值.
本文到此基本结束了,下面的小练习检测一下学习成果,喜欢的我的博客可以点赞关注收藏一波,持续更新中...
数据类型综合练习题:dic={‘k1’:’v1’,’k2’:[‘alex’,’sb’],(1,2,3,4,5):{‘k3’:[‘2’,100,’wer’]}}1)将’k2’对应的值的最后面添加一个元素’23’。2)将’k2’对应的值的第一个位置插入一个元素’a’。3)将(1,2,3,4,5)对应的值添加一个键值对’k4’,’v4’。4)将(1,2,3,4,5)对应的值添加一个键值对(1,2,3),’ok’。5)将’k3’对应的值的’wer’更改为’qq’。答案:
dic={'k1':'v1','k2':['alex','sb'],(1,2,3,4,5):{'k3':['2',100,'wer']}}dic['k2'].append('23')dic['k2'].insert(0, 'a')dic[(1,2,3,4,5)].update(k4='v4')dic[(1,2,3,4,5)][(1,2,3)]="ok"dic[(1,2,3,4,5)]['k3'][-1]='qq'print(dic)"""运行结果 {'k1': 'v1', 'k2': ['a', 'alex', 'sb', '23'], (1, 2, 3, 4, 5): {'k3': ['2', 100, 'qq'], 'k4': 'v4', (1, 2, 3): 'ok'}}"""