目录
1.条件语句
之前我们学习了基本的条件控制以及比较运算符,详细请参阅python基础必修1。
# 先声明两个字符串
i = 'a'
j = 'B'
if i < j:
print('a小')
else:
print('a大')
输出结果
为什么会输出a大呢?它们之间到底是怎样比较的?
其实,字符串之间的比较是按ASCII码表来的,它们之间的对应关系如下:
'0'-'9':48-57
'A'-'Z':65-90
'a'-'z':97-122
# 用ord()来显示字符的ASCII码值
i = 'a'
j = 'B'
print(ord(i)) # 打印i的ASCII码值
print(ord(j)) # 打印j的ASCII码值
输出结果
# 用chr()来将ASCII码值转换成字符
print(chr(97))
输出结果
2.运算符
2.1成员运算符
'''
成员运算符
in not in
'''
my_string = 'abcdefg'
if 'a' in my_string:
if 'b' in my_string:
print("a和b都在my_string中")
if 't' not in my_string:
print("t不在my_string中")
输出结果
2.2逻辑运算符
'''
逻辑运算符
and or not
'''
house_person = ['建国','爱国','国庆','卫国']
if '建国' in house_person and '卫国' in house_person\ # 此处要添加\,否则报错,\代表这两部分是一行的
and '爱国' in house_person and '国庆' in house_person:
print("他们在搓麻将")
else:
print("他们在打游戏")
if '建国' not in house_person:
print("建国不在,麻将三缺一")
else:
print("建国正在打游戏")
3.真假值的判断
关于True和False的讨论
print(True and False)
print(True or False)
print(not True)
print(1 and 0)
print(1 or 0)
print(not 1)
输出结果
根据输出结果可以看出
1其实代表了True,0代表了False
and 需要判断到最后一个,只有全部为真,才会返回真
or 只要碰到真,就直接返回真,后面的不用再判断
不是1和0程序如何判断?
print(3 and 4 and 5)
print(3 or 4 or 5)
输出结果
再次验证and会判断到最后一个值5,然后输出,而or遇到第一个真值3就可以返回了。
4.身份运算符
'''
身份运算符
is
is not
'''
i = 1
j = 1
print(i == j)
print(i is j)
print(id(i)) # 打印输出i的地址
print(id(j))
输出结果
list_1 = [1, 2, 3]
list_2 = [1, 2, 3]
print(list_1 is list_2)
print(list_1 == list_2)
print(id(list_1))
print(id(list_2))
输出结果
从上面几个例子可以看出
is 判断的是这些量在内存中的地址
而 == 判断的是这些量的值
5、循环
python中循环的思路框架
循环条件变化必须要有,否则会进入死循环,就像老和尚给小和尚讲故事一样。
5.1while循环
# while循环:求1到10的和
n = 1
sum = 0 # 用来计算和
while n<=10:
sum += n # 相当于sum = sum + n,之前有讲过+=的意思
n += 1 # 相当于 n = n + 1
print(sum)
输出结果
5.2for循环
list = [1,2,3,4,5,6,7,8,9,10]
sum = 0
for i in list: # 遍历list中的元素临时保存到i中
sum = sum + i
print(sum)
# 上面的代码写起来是比较费劲的,下面为改进代码
sum = 0
for i in range(11): # rang()表示一个范围,里面的参数不包含本身,也就是1-10
sum = sum + i
print(sum)
输出结果
5.3循环的中断
循环中的break:跳出整个循环
循环中的continue:跳出本次循环
# 只会输出1
while True:
print(1)
break
print(2)
# 会陷入死循环
while True:
print(1)
continue
print(2)
i = 1
while True:
print("外层循环1")
while True:
print("内层循环")
break # 跳到外层大循环
print("外层循环2")
break
5.4循环算法练习:冒泡排序
冒泡排序算法思路
从左到右,将数组中相邻的两个元素进行比较,把较大的放到后面。
1、比较相邻的元素,若第一个元素比第二个元素大,则交换这两个元素的位置;
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对;
3、针对所有的元素重复以上的步骤;
# 冒泡排序
nums = [3, 1, 25, 10, 15, 8, 6] # 声明一个列表
for i in range(len(nums)-1): # len()返回的是元素个数,角标需要减1(角标都从0开始)
for j in range(len(nums) - i - 1):
if nums[j] > nums[j + 1]: # 判断前面的元素是否大于后面的元素
nums[j], nums[j+1] = nums[j+1], nums[j] # 若满足条件,两元素交换位置
print("第" + str(j) + "次内循环" + str(nums))
print("-----第" + str(j) + "次外循环" + str(nums) + "-----")
print("冒泡排序后的结果:" + str(nums))
输出结果
这块对于初学者可能比较绕,可以现在纸上列出来自己写出每一次交换的结果,再对比程序。
6.作业
已经有一个序列nums = [3, 1, 25, 10, 15, 8, 6]
1、将这个序列从大到小排序
2、声明一个变量,数字 i =7 把这个i插入到序列中它应该在的大小位置。
思路提示:在判断的时候,可以重新声明一个新的序列,然后第一个序列中的值跟 i 比较
若比 i 大,可以直接放入新的序列;若比 i 小,那先放入 i ,然后放入剩下所有的值。