一、程序控制流程
1.1顺序结构
自上而下
1.2 选择结构
单分支:
语法结构:
if 条件:
#缩进
#条件满足的语句
注意:python 是严格要求缩进格式的语言(缩进表现层级关系),要么都是缩进(tab)要么都是
空格
if(){
#分支
}
双分支:
if 条件:
#条件满足的语句
else:
#条件满足的语句
多分支:
if 条件:
#条件满足
elif 条件:
#条件满足
elif 条件:
#缩进
………
else:
#条件满足
import math
dir(math) --------- 查看Math库有哪些方法
help(math.pi)
1.3循环结构
(1)while循环
while循环语法结构:
while 循环的条件:
#缩进 循环体
例:
1.计算100以内的奇数和
sum = 0 n = 1 # n = 99 while n < 100: # n > 0 sum += n n += 2 # n -= 2 print(sum)
2.实现两个数的交换
num1 = num2
# num2 = temp
# 求和法
# num1 = num1 + num2 #12 + 21 = 33
# num2 = num1 - num2 # 33 - 21 =12
# num1 = num1 - num2 # 33 - 12 = 21
# 异或交换发 python独有
num1,num2 = num2,num1
print("交换后的结果num1=%s,num2=%s"%(num1,num2))
3.打印如下图案
* ** *** **** ***** ******
layer = int(input("请输入要打印的行数:"))
index = 1
while index <= layer:
j = 1 #每行*的个数
while j <= index:
print("*",end="")
j += 1
print() index += 1
# a = int (input ("请输入行数"))
# x = 1
# while x <= a:
# print("*" *x)
# x += 1
4.打印九九乘法表
# index = 1
# while index <= 9:
# j = 1 #每行*的个数
# while j <= index:
# print("%s X %s = %s "%(index,j,(index*j)),end="")
# j += 1
# print()
# index += 1
i = 1
while i <= 9:
j = 1
while j<=i:
res = i * j
if res < 10:
print("%s X %s = %s "%(i,j,(i*j)),end="")
else:
print("%s X %s = %s "%(i,j,(i*j)),end="")
j += 1
print()
i += 1
5.判断一个数是否为质数(素数)
num = eval(input('请输入一个数字:'))
if num <= 1:
print('这不是质数')
elif num == 2:
print('这是一个质数!')
else:
i=2
while i < num:
if num%i == 0:
print('这不是一个质数')
break
i += 1
else:
print ('这是一个质数!')
6.猜单词
在这里插入代码片
(2)for循环
for each for in
for in ----- 遍历容器
for 变量 in 容器:
#缩进
#循环体
for in循环主要用于遍历可迭代对象(python是一种数据类型------容器)
求:遍历1-100
range() ---------- 范围的意思 ------ 前闭后开
range(参数) ---------------表示从0开始到参数结束打印此区间所有的整数,前闭后开
range(参数1,参数2)-------------表示打印参数1到参数2区间内的整数,前闭后开
range(参数1,参数2,step)------表示打印参数1到参数2区间内的整数,数据的变化随step的变化而
变化,默认的step的值为1,前闭后开
range(10) range(10,20) range(10,20,2)
break ------- 跳出循环
continue ---------- 继续循环
例·:
1.计算0~100以内所有偶数和 (用for循环)
sum = 0
# for i in range(101):
# if i % 2 == 0:
# sum += i
for i in range(0,101,2):
sum += i
print("0~100内偶数和是:",sum)
2.计算0~100以内所有奇数和
3.一个自然数与3的和是5的倍数,与3的差是6的倍数,求这个自然数?
index = 0
while True:
if (index +3) %5 ==0 and (index -3) % 6 == 0:
print(index)
break
index += 1
4、在400~500之间求一个数,它被2除余1,被5除余3,被8除余1,这个数是多少?
for i in range(400,501):
if i % 2 == 1 and i %5 == 3 and i % 8 ==1:
print(i)
5.打印等腰三角形
*
***
*****
*******
layer = int(input("请输入你要打印的行数:"))
for i in range(1,layer+1):
#计算空格的个数
space_num = layer - i
for j in range(0,space_num):
print(" ",end="")
#计算*个数
star_num = 2*i-1
for j in range(0,star_num):
print("*",end="")
print("")
6.打印菱形
*
***
*****
*******
*****
***
*
layer = int(input("请输入你要打印的行数:")) #上半部分 for i in range(1,layer//2+2): #前闭后开 #计算空格的个数 space_num = layer - i for j in range(0,space_num): print(" ",end="") #计算*个数 star_num = 2*i-1 for j in range(0,star_num): print("*",end="") print("") #下半部分 for i in range(layer//2,0,-1): #计算空格的个数 space_num = layer - i for j in range(0,space_num): print(" ",end="") #计算*个数 star_num = 2*i-1 for j in range(0,star_num): print("*",end="") print("")
二、容器
什么是容器?为什么要学习容器?
容器:存放多个元素的一种数据类型
列表 集合 元组 字典
2.1列表(list(线性表))
常见线性表(数组 栈 队列 链表(单链表和双链表))-------基于链表实现的(双链表)
注意:python里面没有数组(存储的连续的,所以删除比较慢)
栈 :后进先出
队列:先进先出
定义方式:
(1)基于弱数据类型语言的定义
ls = [1,2,3,4,5]
(2)通过全局函数list()定义
ls = list()
ls2 = list([1,2,3,4,5])
type(ls) ----- 判断类型
如何获取元素?
通过下标获取,从0开始,如果下标超过列表的最大下标值,会报错
通过下标可以修改列表里面的某个元素
如何遍历列表?(每个元素)
for i in ls:
print(i)
index = 0
while index < len(ls):
print(ls[index])
index += 1
常用方法:
append() -------- 向列表的尾部添加元素
insert(index,object) -------- 向指定的下标处添加元素
sort()-------- 进行排序(从下到大 int类型)可以对字母进行排序(ASCII值)类型不能混
index()-------- 返回的是元素在列表中的第一个位置
reverse()------------ 将列表进行翻转
remove()---------- 删除某个元素,如果有重复,删除的是第一次出现的元素,如果元素不存在会
报错
count()-------- 返回的是某个元素在列表里面的个数
clear()--------- 清除元素
copy()-------- 浅拷贝对象 不等价与 =
extend()-------- 合并列表
pop()-------删除列表尾部的元素(与append相反),返回删除的元素,pop(i) i指的是下标
补充:
1、通过下标可以直接更改列表里面某一个元素的值
2、列表里的元素类型可以多个类型
ls = [1,2,3,[1,2,3],5,6] ls = ["python","c","java",["数据结构与算法","数据库","计算机组成原理"],"c#",["英语","数 学","语文"],"js"]
3、
ls = [] len(ls) 0
2.2集合 set ------哈希表
定义方式:
(1)set() 全局函数 s = set()
(2)s = {1,2,3} ---------- 弱数据类型语言 {} ------- 集合
底层是基于hash表实现?
集合无序的,不能重复的(集合里面的元素是唯一的,无序并不是顺序)
s[0] ?--------- 报错 ,不可以访问 因为是无序
clear ---------- 清除
copy
remove ------ 如果元素不存在会报错
pop
add ------ 添加 ,添加重复的元素的时候不会报错,但是不能成功添加,因为集合元素不能重复
difference ------- 差集
intersection------- 交集
union ------- 并集
update ----- 更新意思 更新集合(合并集合)
discard-------- 移除元素,移除不存在的元素的时候,不会报错
2.3 元组(tuple)
有序的 ------- 通过下标获取元素
元组定义:
(1)t = tuple()
(2)t = (1,2,3) ------- 弱数据类型语言
ls = [1,2,3,[1,2,3],5,6] ls = [“python”,“c”,“java”,[“数据结构与算法”,“数据库”,“计算机组成原理”],“c#”,[“英语”,“数 学”,“语文”],“js”] ls = [] len(ls) 0
特点:
1、通过下标获取元素
2、元组是一个不可变(指向不可变)类型,但是元组里面的元素可以是可变类型
(1, 2, 3, [‘A’, ‘B’], 4)
(1, 2, 3, [‘X’, ‘Y’], 4)
变化的角标3处List里面的元素
count
index
注意:能用元组的情况下尽量不要用列表
面试题:t =(1) 判断一下t的类型?
答案: int
如何定义一个元组只有一个元素?
答案:t = (1,)



