01回顾
-
python 交换两个数的数值
# python交换数据 a = 0 b = 6 a, b = b, a
-
斐波那契数列
# 递归函数调用输出第N个斐波那契数列 def Fib(n): if n == 1 or n == 2: return 1 else: return (Fib(n-1) + Fib(n-2)) print(Fib(5))
# python斐波那契 pre1 = 1 pre2 = 1 n = 6 for x in range(n-3): pre1, pre2 = pre2, pre1+pre2 print(pre1++pre2)
02list列表
- 什么是列表
- 列表是容器型属性类型(是序列); 将[] 作为容器标志,里面多个元素用逗号隔开 [数据1,数据2,…]
- 列表是可变的:列表中元素的顺序可变,个数可变,值可变
- 列表是有序的:支持下标操作,下标是顺序的标志
- 列表的元素:任何类型的数据都可以作为列表的元素,同一个列表中不同的元素的类型可以不同(区别于C)
list1 = []
print(list1, type(list1)) # [] <class 'list'>
print([1, 2, 3] == [3, 2, 1]) # False (列表有序)
print({1, 2, 3} == {3, 2, 1}) # True (集合无序)
list2 = [10, 23.8, 'abc', True, [1, 2], (10, 20), {'a': 10}] # 支持多类型 元祖、字典
print(list2)
a = 100
# list3 =[20, 4, a*3, a<5,a=5] # 赋值语句不可
-
获取列表元素(查)
-
1)获取单个元素
-
语法:列表[下标] - 获取列表中指定下标对应的元素
-
说明:
-
列表 - 保存列表的变量,也可以直接写列表
-
[] - 固定写法
-
下标 - 索引:元素在有序序列中的位置信息
元素从前往后对应的下标值从0 开始,从后往前从-1开始依次减少
num = [19, 90, 87, 67, 40] # 下标 0 1 2 3 4 # -5 -4 -3 -2 -1 print(num[2]) # 87 print(num[-3]) # 87
-
-
-
2)遍历 - 一个一个的获取列表中所有的元素
- 方法一:
- for 变量 in 列表:
循环体
- for 变量 in 列表:
- 方法二: 通过获取所有元素的下标来获取元素
- for 下标 in range(列表长度):
列表[下标]
- for 下标 in range(列表长度):
- len(序列) - 获取序列中元素的个数
for index in range(len(num)): print(index, num[index]) for index in range(-1, -len(num) - 1, -1): print(index, num[index])
# 练习 count = 0 scores=[78,67,56,90,78,23,91] for i in scores: if i < 60: count += 1 print(count)
- 方法一:
-
3)切片 - 同时获取多个元素
-
a .基础语法
- 列表[开始下标:结束下标:步长] 从开始下标开始,结束下标取不到
- 如果步长为正:从开始下标开始到结束下标前,从前往后取,取的时候步长为指定步长
- 如果步长为负:从开始下标到结束下标前,从后往前取,取的时候步长为指定步长
-
b . 省略语法
- 1)省略步长:列表[开始下标:结束下标] - 相当于步长为1
- 2)省略开始下标:列表[:结束下标:步长] / 列表[:结束下标]
- 3)省略结束下标:列表[开始下标::步长] / 列表[开始下标:]
movies = ['vv', 'vd', 'sdcs', 'sdvs', 'fdvd', 'evfvd', 'eger', 'chgv'] print(movies[1:-2]) # ['vd', 'sdcs', 'sdvs', 'fdvd', 'evfvd'] print(movies[1:-2:2]) # ['vd', 'sdvs', 'evfvd'] print(movies[1:-2:-2]) # [] 空 步长为负,从前向后,矛盾 print(movies[-2:1:1]) # [] 空 步长为正,从后向前,矛盾 print(movies[-2:1:-2]) # ['eger', 'fdvd', 'sdcs'] print(movies[1:-1]) # 去头去尾 print(movies[1:]) #['vd', 'sdcs', 'sdvs', 'fdvd', 'evfvd', 'eger', 'chgv'] print(movies[3::-1]) # ['sdvs', 'sdcs', 'vd', 'vv'] print(movies[:3]) # ['vv', 'vd', 'sdcs'] print(movies[::-2]) # ['chgv', 'evfvd', 'sdvs', 'vd']
-
-
03作业
-
判断101-200之间有多少个素数,并输出所有素数。
count = 0 for num in range(101,200): # print(num) for i in range(2, int(num**0.5)+1): #优化范围 开方+1 if (num % i == 0): # print(num,'不是素数') break else: count +=1 print(num,'是素数') print('101-200之间一共有:', count,'个素数')
-
求整数1~100的累加值,但要求跳过所有个位为3的数。
sum1 = 0 for i in range(100): if i % 10 != 3: sum1 += i print(sum1)
-
有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数
fenzi = 2 fenmu = 1 for i in range(20): temp = fenzi / fenmu fenzi,fenmu = fenzi+fenmu,fenzi print(temp)
-
写程序计算 n 的阶乘 n! 的结果
n = int(input('请输入n:')) a = 1 for i in range(1,n+1): a *= i print(n,'的阶乘为:',a)
-
求1+2!+3!+…+20!的和
a = 1 s = 0 for i in range(1,21): a *= i s += a print(s)
-
写程序求表达式 a + aa + aaa + aaaa+ … 的结果,其中a是1~9的数字,求和的项数用n来控制。(a和n可以用变量来表示)
例如:a为3, n为5的时候: 3 + 33 + 333 + 3333 + 33333
-
控制台输出三角形
a.根据n的值的不同,输出相应的形状 n = 5时 n = 4 ***** **** **** *** *** ** ** * * # 程序a n = int(input('请输入n:')) for i in range(n): for j in range(n - i): print('*',end='') print() b.根据n的值的不同,输出相应的形状(n为奇数) n = 5 n = 7 * * *** *** ***** ***** ******* #程序b n = int(input('请输入n:')) for i in range((n+1)//2): for j in range((n+1)//2 - i): print(' ',end='') for k in range(2*i+1): print('*',end='') print() c. 根据n的值的不同,输出相应的形状 n = 4 1 121 12321 1234321 n = 5 1 121 12321 1234321 123454321 ``