Python基础1——变量、判断、循环、字符串、列表

1 认识python

1.1 认识python

计算机识别机器语言,机器语言由二进制0和1组成

计算机要执行高级语言,转换方式

  1. 编译 : C语言、C++、java。 一次性编译成可执行文件
  2. 解释 : 一行一行地解释

python是解释型语言

python解释器、pycharm编辑器

举个例子:

要给工地煮饭

编译:把饭菜都做好,做成盒饭(.exe,.class)。带到工地,只需要加热即可使用

解释型:把原材料和锅都带到工地,现场炒菜。

编程语言是用来定义计算机程序的语言,用来向计算机发出指令。

python语言是一种面向对象的解释型计算机程序设计语言

python是强类型动态脚本语言

  1. 强类型:不允许不同类型相加
  2. 动态:不使用显示数据类型声明,比如说a=10
  3. 脚本语言:一般是解释型语言,运行代码只需要一个解释器

1.2 第一个程序

1.2.1 使用cmd命令执行

新建一个python文件

注:要显示后缀名

1print("hello world")

在cmd中输入

python xxx.py

1.2.2 使用pycharm执行

在pycharm中配置python解释器

在pycharm中新建一个项目

新建python文件

写入print("hello world")

运行即可

1.3 BUG

bug的翻译是一个虫子,表示电脑系统中隐藏的错误与缺陷

invalid syntax 无效语法

unexpected indent 缩进问题

中文符号和英文符号是不一样的

缩进也要注意

tab 向右缩进

shift+tab 向左缩进

1.4 注释

对代码进行解释说明

在执行的时候,注释是不会被执行的。

单行注释:任意位置都可以了

多行注释:要服从缩进要求

1.4.1 单行注释

1# 单行注释 2print("Hello") 3

快捷键:Ctrl+/

撤销 : Ctrl+z

复制到下一行:Ctrl+d

搜索: Ctrl+F

1.4.2 多行注释

1''' 2这是三个单引号的多行注释 3这是三个单引号的多行注释 4这是三个单引号的多行注释 5''' 6print("hello") 7""" 8这是三个双引号的多行注释 9这是三个双引号的多行注释 10这是三个双引号的多行注释 11""" 12

2 变量

2.1 运算符

1+ #加 2- #减 3* #乘 4/ #除 5// #整除 6% #取余 7** #幂次方 8 9 101/2 # 得到1.5 111//2 # 得到0 125//2 # 得到2 133**2 # 得到9 142**3 # 2*2*2=8 159%2 # 得到1 16 17 18优先级: 19幂运算 ** 20乘、除、取余、取整除 +% // 21加减 + - 22 234*2**3 #幂运算的优先级较高 24
1 2= #赋值运算符 3+= # n += 1 等价于 n = n+1 4-= # n -= 1 等价于 n = n-1 5*= # n *= 2 等价于 n = n*2 6/= # n /= 2 等价于 n = n/2 7%= 8**= 9//= 10 11

2.2 变量

将运行的结果保存起来

概念:一个容器,计算机当中的存储空间

作用:在计算机内保存数据

保存数据的格式: 变量名=值

在python中是没有变量类型的,变量名更像是一个便利贴,把便利贴贴到数据上。

举个例子:

某城市要打造运动城市,那么就需要盖很多的运动场馆,每个场馆就是一个变量。

对于C语言、C++、Java等语言

如果要举办足球比赛,那么就需要专门搭建一个足球场。在这个足球场馆中只能举办足球比赛。

如果要举办篮球比赛,那么就需要专门搭建篮球场馆。

1int a; //搭建一个int场馆 2a = 10 //只能放int类型的数据 3char b; //搭建一个shar场馆 4b = 'c' //只能放char类型的数据

对于Python、javascript等语言

不需要专门搭建场馆,随便指定个场馆,贴个足球场的牌子,就称为了足球场。

贴个篮球场的牌子,就成了篮球馆。

1a = 10 # 贴个便利贴,这是int场馆 2a = 'c' # 贴个便利贴,这是char场馆

查看变量类型

1a = 100 2print(type(a)) 3a = "python" 4print(type(a)) 5

2.3 变量的命名规范

变量的命名规范

  1. 只能由数字,字母,_(下划线)组成
  2. 不能数字开头
  3. 不能是关键字
  4. 区分大小写

注意:变量要见名知义

1 2a_1 = "a" 3aaa = "c" 4a12 = "d" 5_a = 20 62a = "c" #错误,不能以数字开头 7print = 10 #错误不能用关键字 8type = 20 #错误不能使用关键字 9he!he = 20 #不可以,!不能出现 10 11A = 10 12a = 20 13print(A) #区分大小写的 14print(a) #区分大小写的 15 16 17# 可以使用中文,但是不推荐 18年龄 = 18 19print(年龄)
1# 查看所有关键字 2 3import keyword 4print(keyword.kwlist) 5

下划线分割命名法

1my_name = "张三" 2my_job = "律师" 3

驼峰命名法

1myName = "张三" 2myJob = "律师" 3 4FirstName = "伊丽莎白" 5

2.4 输入输出

输出

1 2print(123) 3print("张三") 4 5a = ''' 6张三 7李四 8''' 9print(a) 10

转义字符

1\t #表示制表符,表示4个空格 2print("abc\tdef") 3 4\n #表示换行符 5print("hello\nworld") 6 7\r 相当于回车 8print("hello\rworld") 9 10\\ 表示反斜杠符号 11print("hell\\o") 12 13

input函数

1name = input("请输入名字") 2print(name) 3

3 数据类型

3.1 数据类型

int 整数类型 : 任意大小的整数

float 浮点型

bool 布尔型

complex 复数(了解)

1a = 10 2print(type(a)) #整数 3 4b = 10.2 5print(type(b)) # 浮点数 6 7c = True #bool类型 8print(type(c)) 9# True相当于非零 10# False相当于零 11print(False+2) 12 13# 复数 包含 实部和虚部 14# 固定写法 z = a+bj 其中a为实部,b为虚部 15print(1+2j) 16a = 1+2j 17b = 3+4j 18print(a+b) 19print(a*b) 20

3.2 字符串

名称:str

1# 字符串要加引号,单引号、双引号、三引号都可以 2name = "zhangsan" 3print(name) 4print(type(name)) #字符串类型 5 6name2 = '伞兵一号,准备就绪' 7print(name2) 8print(type(name2)) 9 10# 用三引号进行定义 11name3 = ''' 12你怎么睡得着的? 13你这个年龄段睡得着觉? 14''' 15print(name3) 16

字符串的运算符

1+ # 字符串拼接 2a1 = "hello " + "python" 3print(a1) 4 5a1 = "hello" 6b1 = "teacher" 7print(a1+" "+b1) 8 9* # 重复输出 10print("hello"*3) 11print(a1*3) 12 13# 成员运算符:检查字符串中是否包含了某个字符 14# in 15# not in 16a1 = 'hello' 17print('h' in a1) #判断a1中是否包含h 18print('h' not in a1) #判断a1中是否不包含h 19 20 21 22

3.3 下标及切片

下标是从0开始的

1 2# 下标: 从0开始 3name = 'python' 4print(name) 5print(name[0]) #写法:字符串名[下标] 6print(name[4]) 7print(name[10]) # 数组越界,超出下标范围 8 9print(name[-1]) #取最后一个 10print(name[-2]) #取倒数第二个 11

切片,截取一段数据

[起始:结束:步长]

1# [起始:结束:步长] 2name = "python" 3print(name[0:3:1]) #左闭右开 4print(name[0:3]) #左闭右开 5 6print(name[2:4]) 7 8print(name[-3:-5]) #空,没有取到 9print(name[4:2]) #空 10print(name[-5:-3]) #导数第五个开始 11 12# 步长 表示选取间隔 不写步长,默认是1 13# 步长的绝对值大小绝对值决定数据的间隔,正负号决定方向 14print(name[4:2:-1]) #从右往左取 15print(name[-3:-5:-1]) 16 17print(name[3:]) # hon 18print(name[:]) #python 19 20print(name[::2]) #pto 21 22# 对字符串进行逆序 23print(name[::-1]) #nohtyp 24 25

3.4 格式化输出

占位符

占位符作用
%s字符串
%d整数
%4d整数,四位,如果不足前面补充空白
%f浮点数
%.4f设置小数位数,四舍五入
%%输出%
1# 占位符 %格式化输出 2# %s 字符串 3name = "张三" 4print("这是一个字符串:%s" % name) 5print("年龄:%d,姓名%s"%(18,name)) 6 7a = 1.2345 8print("%f"%a) #默认后六位 9 10

format() 使用多括号来代替百分号

1print("我是{},年龄{}".format("张三",20)) 2

f 表达式

1name = "张三" 2age = 18 3print(f"我叫:{name},今年:{age}") 4

3.5 类型转换

待补充

4 if 判断

根据条件是否满足,来执行相应的代码

1age = 16 2if age >= 18: #英文冒号 3 print("已经成年了")

4.1 比较运算符

比较运算符

1 2== # 两个变量的值是否相等 3!= # 比较值是否不相等 4a = 4 5b = 3 6if a>b: 7 print("a的值大") 8 9print(a == b) 10print(a != b) 11 12if a==b: 13 print("a和b相等") 14

4.2 逻辑运算符

1and2or3not4 5# and 需要两个都成立才行 6name = "zhangsan" 7age = 18 8if name == "zhangsan" and age == 18: 9 print("两个都满足") 10 11if name == "zhangsan" or age == 18: 12 print("两个满足一个即可") 13 14if not (name=="zhangsan"): 15 print("不等于张三")

4.3 if-else

1age = 16 2if age>=18: 3 print("已经成年了") 4else: 5 print("还没有成年") 6 7 8a = 1 9b = 2 10if a < b: 11 print("a比b小") 12else: 13 print("a比b大") 14 15

4.4 三目运算符

1# a if a>b else b 2# 格式 为真的结果 if 判断条件 else 为假的结果 3 4a = 1 5b = 2 6print('a比b小' if a<b else 'a比b大') 7 8

4.5 if-elif

1 2if 条件1: 3 代码语句 4elif 条件2: 5 代码语句 6elif 条件3: 7 代码语句 8 9sc = 85 10if sc >= 85: 11 print("优秀") 12elif sc >= 75 and sc <=84: 13 print("良好") 14elif sc >= 60 and sc < 75: 15 print("及格") 16elif sc >= 0 and sc <60 17 print("不及格") 18

python中可以使用连不等,其他语言不行

1sc = int(input("请输入成绩")) 2 3if 85 <= sc <= 100: 4 print("优秀") 5elif 75 <= sc < 85: 6 print("良好") 7elif 60 <= sc < 75: 8 print("及格") 9elif 0 <= sc < 60: 10 print("不及格") 11else: 12 print("成绩无效")

4.6 if嵌套

1if 条件1: 2 if 条件2: 3 执行语句 4 5d = 0 #是否有车偏偏 6d = 1 #是否有危险品 7 8if p==1: 9 print("你有票,开始安检") 10 if d==1: 11 print("有危险品,不能进去") 12 else: 13 print("可以进站了") 14else: 15 print("赶紧抢票")

5、循环

5.1 while循环

1# while 条件: 2# 循环体 3# 改变变量 4 5i = 0 6while i<=20: 7 print(f"我要好好学习{i}") 8 i += 1 9 10# 计算1-100的和 11i = 1 12s = 0 13while i<=100: 14 s += i 15 i += 1 16print(f"0-100的和为{s}") 17
1 2i = 1 3s = 0 4while i<=100: 5 s += i 6 i += 1 7else: #当while条件不满足时执行 8 print(f"0-100的和为{s}") 9

5.2 while嵌套

1a = 1 2while a < 4: 3 print(a) 4 b = 1 5 while b < 5: 6 print("这是b值") 7 b += 1 8 a += 1 9

九九乘法表

1i = 1 2while i <= 9: 3 j = 1 4 while j <= i: 5 print(f"{i}*{j}={i*j}",end="\t") 6 j += 1 7 i += 1 8 print() 9 10 11 12

5.3 for循环

1# for 临时变量 in 可迭代对象: 2# 操作代码 3 4name = "zhangsan" 5for i in name: 6 print(i)
1# range(开始,结束,步长) 左闭右开 2 3for i in range(1,6): 4 print(i) 5 6s = 0 7for i in range(0,101): 8 s += i 9print("1-100的和",s) 10

5.3 break和continue

break :结束当前循环

continue: 直接进入下一轮循环

1 2i = 0 3while True: 4 print("hello") 5 if i > 4: 6 break 7 i += 1 8 9 10i = 0 11while i < 10: 12 print(i) 13 if i == 4 or i==5: 14 continue 15 i += 1 16 17

6、字符串、列表

6.1 字符串编码

ASCII 编码

GBK

UTF-8

编码: encode()

解码: decode()

1 2encode : 将其他编码的字符串转换为Unicode编码 3decode :unicode编码转换成其他编码的字符串 4 5a = 'hello' 6print(a) 7a1 = a.encode() #编码 8print(a1) 9print(type(a1)) #<class 'bytes'> 10 11 12a2 = a1.decode() #解码 13print(a2) 14print(type(a2))
1 2a = "你好啊" 3a_encode = a.encode() 4print(a_encode) 5

6.2 字符串常见操作

1find() # 查找字符是否包含在字符串中,找到返回开始的索引下标,找不到返回-1 2name = "互联网水太深互联网" 3name.find("互联网") 4name.find("互联网",3) #从下标3开始寻找 5name.find("你好") #没找到,返回-1 6 7 8index() # 跟find方法类似,不过没找到会抛出异常 9 10 11count() #计算字符串出现的次数 12print(name.count("互")) # 总共出现2次 13 14 15replace() #字符串的替换 16name = "在干嘛?吃了吗,吃了吧" 17name.replace("吃","睡") #把吃替换成睡 18name.replace("吃","睡",1) #只替换一次 19 20split() #字符串的分割 21name = "哈哈哈哈x哈哈哈哈x嘻嘻嘻xxx" 22name.split("x") #按照x进行切割 23name.split("x",2) # 只切割两刀 24 25
1name = "hello" 2 3# capitaliza() #第一个字母大写 4print(name.capitalize()) #Hello 5 6# startswith() 7print(name.startswith("he")) #判断是否以he开头 8 9# endswith() 10print(name.endswith("lo")) #判断是否以lo结尾 11 12# lower() 转换为小写 13print(name.lower()) 14 15# 转换为大写 16print(name.upper()) 17 18

6.3 列表的相关操作

1li = ['zs','ls','ww',2,3,4,5] 2print(type(li)) #<class 'list'> 3 4print(li[0]) 5print(li[-1]) #最后一个 6 7#切片操作也是可以的 8print(li[3:6]) 9print(li[1:4,2])
1# 添加元素 2# append 3# extend 4# insert 5li2 = [1,2,3,4,5] 6li2.append('10') #只添加一个元素 7li2.extend(['4','5','6']) # 添加一个list 8li2.insert(3,'11') # 在指定的位置插入元素11 9 10 11# 修改元素 12# 通过下标修改 13li2[2] = '你好' 14 15# 查找元素 16# in 如果存在返回True 17# not in 18# index 19# count 20li2 = ["张三","李四","王五"] 21print("张三" in li2) 22print("张三" not in li2) 23print(li2.index("李四")) #查找李四的下标,找不到报错 24print(li2.count("李四")) #李四出现的次数 25 26#删除元素 27# del 28# pop 29# remove 30li2 = [1,'b','c','d'] 31del li2[2] # 根据下标删除 32li2.pop() # 删除最后一个元素 33li2.pop(3) # 删除下标为3的元素 34li2.remove('c') # 根据元素的值进行删除 35 36# 排序 37# sort : 默认是从小到大 38# reverse 39li3 = [1,2,9,4,3] 40li3.reverse() # 对list中的元素逆序 41li3.sort() # 进行排序,升序 42li3.sort(reverse=True) #倒序排序 43 44li4 = sorted(li3,reverse=True) #倒序排序 45

6.4 列表推导式

1 2# [ 表达式 for 变量 in 列表] 3# [ 表达式 for 变量 in 列表 if 条件] 4 5 6l = [i for i in range(100)] #取1-100的所有数字 7l2 = [i for i in range(100) if i%2==0] #取偶数 8

6.5 列表嵌套

列表中包含列表

1 2li = [1,2,3,[4,5,6]] 3 4print(li[1]) 5 6print(li[3][0]) 7print(li[3][2]) 8

7、元组、字典、集合

7.1 元组

使用()进行定义

使用小括号进行定义

元组<font color="red">不可以修改元素</font>

1tu = (1,2,3) 2print(tu) 3print(type(tu)) 4

当写元组的时候,只有一个元素,<font color="red">末尾一定要加逗号</font>

1tu = (1) 2print(type(tu)) 3# <class 'int'> 4 5tu = (1,) 6print(type(tu)) 7# <class 'tuple'> 8

除了修改和删除,其他的操作与列表类似

1tu3 = ('a','b','c','d') 2print(tu3.index('b')) 3print(tu3.count('b')) 4

7.2 字典

1dic = {'name':"zhangsan",'age':18} 2# 键值对的形式 3print(dic) 4print(type(dict)) 5 6# key 对应 value 7# name 是键 、 "zhangsan"是值 8# key 是唯一的,当key相同时,就会被覆盖 9dic2 = {"name":"zhangsan", "name":"lisi"} 10print(dic2["name"]) # 得到 lisi

字典的基本操作

1dic = {"name":"zhangsan","age":18} 2 3# 查看元素 4# 变量名[key] 5# 变量名.get(key) 6print(dic["name"]) 7print(dic.get("name","不存在")) #如果没有key,返回不存在 8 9# 修改元素 10# 变量名[key] = vlaue 11dic["name"] = "李四" 12 13# 添加元素 14# 变量名[key] = value 15dic["job"] = "律师" 16 17 18# 删除数据 19# del 变量名[key] 20# 变量名.clear() 清空整个字典 21del dic["job"] #删除 22del d #删除整个字典 23dic.clear() #清空字典 24 25

字典的常见操作

1d2 = {"name","zhangsan","age":18} 2 3len() #键值对个数 4print(len(d2)) 5 6keys() #所有key的列表 7print(d2.keys()) 8 9 10values() #所有值的列表 11print(d2.values()) 12 13items() #包含 键、值的列表 14for key,value in d2.items(): 15 print(key,value) 16 17

7.3 集合

使用{}进行定义

集合是无序的,也是唯一

集合是通过hash()来确定唯一性。 整数的hash()就是本身hash(3)=3,但是字符串的hash()每次都不一样

1s1 = {1,2,3} 2print(type(s1)) 3 4s1 = {1,2,4,3,5} 5print(type(s1)) 6 7s1 = {1,2,3,4,4,4,6} #重复的会删除 8print(s1) 9print(type(s1))
1# 添加元素 2# add 3# update 4s1 = {1,2,3,4} 5s1.add(8) #只能添加1个元素 6print("添加后的",s1) 7s1.update("678") #得到{1,2,3,4,'6','7'.'8'} 8 9 10# 删除元素 11# remove 12# pop 13# discard 14s2.remove('6') #删除指定元素,有则删除,无则报错 15s2.pop() #随即删除 16print("删除后",s2) 17s2.discard('6') #删除指定元素,有则删除,无则不操作 18 19 20# 交集 21# & 22s1 = {3,4,5} 23s2 = {5,6,7} 24print(s1 & s2) 25 26# 并集 27# | 28s1 = {3,4,5} 29s2 = {5,6,7} 30print(s1 | s2) 31
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

Python之time模块的时间戳、时间字符串格式化与转换

Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y