01.recode
1.变量
变量名 = 值
变量存的是地址
2.运算符:
3.字符串
字符
获取字符
运算
相关方法
4.if
if
if-else
if-elif-else
5.for\while
for 变量 in 序列:
循环体
else:
代码段
执行过程:
while 条件语句:
循环体
else:
代码段
执行过程:
continue和break
else
name = '余婷'
num1 = num2 = num3 = 10
num11, num22 = 10, 30
# 交换两个变量的值
a = 10
b = 20
a, b = b, a
print(a, b)
20 10
for x in range(10):
for y in range(10):
print(x,y)
break
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
2.表达式0x13&0x17的值是
00010011
00010111
00010011
0x13 = 19
3.若x=2,y=3则x&y的结果是
010
011
010
4.表达式 -97 | 120 的运算结果是
11100001(原) = 10011110(反) = 10011111(补)
01111000
10011111
11111111(补) = 11111110 = 10000001 = -1
6.设x 是一个整数(16位).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是( 11111111)
n = 6784,以下能够获取到7 的方法有()
a. n / 1000 % 100 = 6.784 % 100 = 6.784
b. n % 1000 / 100 = 784 / 100 = 7.84
c. n // 100 % 10 = 67 % 10 = 7
d. n // 10 % 100 // 10 = 78//10 = 7
9.以下表达式 10 / 4 + 23 // 4 * 2 - 30的计算结果是:______。
2.5 + 10 - 30 = -17.5
num = 3
print((num % 3 ==0 or num % 7 == 0) and (not (num % 3 ==0 and num % 7 == 0)))
print((num % 3 ==0 or num % 7 == 0) and num % 21 != 0)
print((num % 3 != 0 and num % 7 == 0) or (num % 3 ==0 and num % 7 != 0))
True
True
True
02.homework
1.求2的20次方
numbers = 1
i = 0-19
i = 0 numbers = 1*2=2^1
i = 1 numbers = 2*2 = 2^2
i = 2 numbers = 2*2*2 = 2^3
...
i = 19 numbers = 2^20
numbers = 1
for i in range(0, 20):
numbers *= 2
print(numbers)
1048576
2.统计1~100中能被3或者7整除但是不能同时被3和7整除的数的个数
# num = 1 ~ 100
summation = 0
num = 1
while num <= 100:
if (num % 3 == 0 or num % 7 == 0) and num % 21 != 0:
summation += 1
num += 1
print(summation)
39
3.计算1-100之间能3整除的数的和
sum1 = 0
for x in range(0, 101, 3):
sum1 += x
print(sum1)
1683
补充:sum函数是python内置函数:用来求数字序列的和
print(sum(range(101)))
V
4.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34....
# 第n个数 = 第n-1个数 + 第n-2个数
pre_1 = 1 # 第n-1个数
pre_2 = 1 # 第n-2个数
current = 1 # 当前数(第n个数),当n=1或者2的时候,当前数就是1
n = 6 # 第几个数
# num = 3 current=1+1= 2 pre_1,pre_2 = 2,1
# num = 4 current=2+1=3 pre_1,pre_2=3,2
for num in range(3, n+1):
current = pre_1 + pre_2
pre_1,pre_2 = current, pre_1
print('第%d个数是%d' % (n, current))
第6个数是8
5.判断101-200之间有多少个素数,并输出所有素数。
# 方法一
# 素数:除了1和它本身不能被其他的数整除 -->
# 1).将101-200中的每个都取出来
# 2).判断取出来的每个数是否是素数:判断这个数从2开始到这个数-1是有一个能够被它整除的
for num in range(101, 201):
# 判断这个num是否是素数
for x in range(2, num):
# 如果2~num-1之间有一个能够被num整除的就说明num不是素数
if num % x == 0:
# print(num, '不是素数')
break # 只需要找到一个就可以证明num不是素数
else:
print(num, '是素数')
101 是素数
103 是素数
107 是素数
109 是素数
113 是素数
127 是素数
131 是素数
137 是素数
139 是素数
149 是素数
151 是素数
157 是素数
163 是素数
167 是素数
173 是素数
179 是素数
181 是素数
191 是素数
193 是素数
197 是素数
199 是素数
# 方法二
for num in range(101, 201, 2):
count = 0 # 存储2~num-1之间有几个能够被num整除的
for x in range(2, num):
if num % x == 0:
count += 1
break
if count == 0:
print(num,'是素数')
101 是素数
103 是素数
107 是素数
109 是素数
113 是素数
127 是素数
131 是素数
137 是素数
139 是素数
149 是素数
151 是素数
157 是素数
163 是素数
167 是素数
173 是素数
179 是素数
181 是素数
191 是素数
193 是素数
197 是素数
199 是素数
6.打印出所有的⽔水仙花数,所谓⽔水仙花数是指一个三位数,其各位数字立方和等于该数本身。
例例如:153是 一个水仙花数,因为153 = 1^3 + 5^3 + 3^3
for num in range(100, 1000):
ge_wei = num % 10
shi_wei = num // 10 % 10
bai_wei = num // 100
if num == ge_wei**3 + shi_wei**3 + bai_wei**3:
print(num, '是水仙花数')
153 是水仙花数
370 是水仙花数
371 是水仙花数
407 是水仙花数
7.有一分数序列列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列列的第20个分数
# 方案1:
# 当前分子: 上一个分数的分子加分母
# 当前分母:上一个分数的分子
fen_zi = 2
fen_mu = 1
n = 20
for x in range(2, n+1):
fen_zi, fen_mu = fen_zi+fen_mu, fen_zi
print('%d/%d' % (fen_zi, fen_mu))
17711/10946
# 方案2
# 第n个分子: 第n-1个分子+第n-2个分子
# 第n个分母:第n-1个分母+第n-2个分母
fen_zi_1 = 2
fen_mu_1 = 1
fen_zi_2 = 3
fen_mu_2 = 2
current_fenzi = 0
current_fenzmu = 0
n = 20
for x in range(3, n+1):
current_fenzi = fen_zi_1+fen_zi_2
current_fenzmu = fen_mu_1 + fen_mu_2
fen_zi_2, fen_mu_2, fen_zi_1, fen_mu_1 = current_fenzi, current_fenzmu, fen_zi_2, fen_mu_2
if n == 1:
print('2/1')
elif n == 2:
print('3/2')
else:
print('%d/%d' % (current_fenzi, current_fenzmu))
17711/10946
8.给一个正整数,要求:1、求它是⼏几位数 2.逆序打印出各位数字
# 方案一:
n = 2378273
str_n = str(n)
print('%d有%d位' % (n, len(str_n)))
print(str_n[::-1])
2378273有7位
3728732
# 方案二:
n = 1236
count = 1
while n // 10:
count += 1
n //= 10
print(count)
n = 1236
for _ in range(count):
print(n % 10, end='')
n //= 10
4
6321
03.认识列表
1.什么是列表列表(list)
列表是python内置的可变并且有序的容器类数据类型(序列)
有序:说明可以通过下标获取元素
可变:指的是列表的中元素的个数,元素的值以及元素的位置可变(列表支持增删改)
2.列表的字面量: 中括号括起来,里面有多个元素,元素之间用逗号隔开
[元素1, 元素2, 元素3....]
元素: 可以是任何类型的数据;同一个列表,不同元素的类型可以不一样
score = 90
list1 = [10, 20, 'abc', True, [1, 2]]
print(list1)
[10, 20, 'abc', True, [1, 2]]
# 空列表
list2 = []
print(list2, type(list2))
[] <class 'list'>
用一个变量保存一个半的学生成绩
scores = [89, 78, 90, 32, 59, 99]
04.列表元素的增删改查
1.查(获取列表的元素)
a.获取单个元素
列表[下标] - 获取指定下标对应的元素
列表一旦确定,列表中的每个元素都对应一个下标;
下标范围:0 ~ 列表长度-1;-1 ~ -列表长度
下标不能越界
films = ['战狼2', '肖生克的救赎', '沉默的羔羊', '蝴蝶效应', '回到未来', '变形金刚', '小羊肖恩']
print(films[2], films[-1])
# print(films[10]) # IndexError: list index out of range
沉默的羔羊 小羊肖恩
b.获取多个元素(切片) - 结果是列表
列表[开始下标:结束下标:步长]
列表[开始下标:结束下标]
print(films[1:5:2])
print(films[:4])
print(films[::-1])
['肖生克的救赎', '蝴蝶效应']
['战狼2', '肖生克的救赎', '沉默的羔羊', '蝴蝶效应']
['小羊肖恩', '变形金刚', '回到未来', '蝴蝶效应', '沉默的羔羊', '肖生克的救赎', '战狼2']
c.遍历列表(将列表中的元素一个一个取出来)
for 变量 in 列表 -> 用变量获取列表中的元素
names = ['小明', '小花', '小红', '黄梅梅']
# 方法一:直接获取列表元素
for item in names:
print(item)
小明
小花
小红
黄梅梅
# 方法二:通过遍历下标获取列表元素
for index in range(len(names)):
print(names[index])
小明
小花
小红
黄梅梅
2.增(添加元素)
a.列表.append(元素) - 在指定的列表的最后添加指定的元素(不会产生新的列表)
films = ['战狼2', '肖生克的救赎', '沉默的羔羊', '蝴蝶效应', '回到未来', '变形金刚', '小羊肖恩']
films.append('电锯惊魂')
print(films)
['战狼2', '肖生克的救赎', '沉默的羔羊', '蝴蝶效应', '回到未来', '变形金刚', '小羊肖恩', '电锯惊魂']
练习1:录入学生成绩,保持到一个列表中。(录入的时候不断输入学生的成绩,直到输入'end'为止)
scores = []
score = input('请输入成绩:')
while score != 'end':
scores.append(int(score))
score = input('请输入成绩:')
print(scores, sum(scores))
b.列表.insert(下标, 元素) - 在指定的下标前插入指定的元素
films = ['海贼王', '火影忍者', '进击的巨人', '一人之下', '一拳超人']
films.insert(2, '海绵宝宝')
print(films, films[2])
films.insert(0, '死神')
print(films)
['海贼王', '火影忍者', '海绵宝宝', '进击的巨人', '一人之下', '一拳超人'] 海绵宝宝
['死神', '海贼王', '火影忍者', '海绵宝宝', '进击的巨人', '一人之下', '一拳超人']
练习2: 有一个有序的数列[1, 7, 34, 67, 100]。
输入任意一个数字,插入到数列中,要求插入后数列还是从下到大排序的
例如:3 -> [1, 3, 7, 34, 67, 100]
200 -> [1,7, 34, 67, 100, 200]
0 -> [0, 1, 7, 34, 67, 100]
nums = [1, 7, 34, 67, 100]
value = int(input('请输入一个数字:')) # 输入一个数字,并且将输入的内容转换成int类型
# index = 0 ~ len(nums) - 1
for index in range(len(nums)):
if nums[index] >= value:
nums.insert(index, value)
break
else:
# 如果没有找到一个比输入的数大的元素
nums.append(value)
print(nums)
3.删(删除列表元素)
a. del 列表[下标] - 删除列表中指定下标对应的元素
del - 关键字, 可以删除任何内容
films = ['战狼2', '肖生克的救赎', '沉默的羔羊', '蝴蝶效应', '回到未来', '变形金刚', '小羊肖恩']
del films[-2]
print(films)
['战狼2', '肖生克的救赎', '沉默的羔羊', '蝴蝶效应', '回到未来', '小羊肖恩']
b.列表.remove(元素) - 删除指定列表中指定的元素
注意:如果指定的元素在列表中有多个,只删除最前那一个
films = ['战狼2', '肖生克的救赎', '蝴蝶效应', '沉默的羔羊', '蝴蝶效应', '回到未来', '小羊肖恩']
films.remove('蝴蝶效应')
print(films)
['战狼2', '肖生克的救赎', '沉默的羔羊', '蝴蝶效应', '回到未来', '小羊肖恩']
c.
列表.pop() - 取出列表中最后一个元素
列表.pop(下标) - 取出列表中指定下标对应的元素
nums = [2, 34, 56, 7, 8, 9, 0]
del_num = nums.pop() # 将最后一个元素取出, 并且保存到变量del_num中
print(nums)
print(del_num)
[2, 34, 56, 7, 8, 9]
0
del_num = nums.pop(1)
print(nums)
print(del_num)
[2, 56, 7, 8, 9]
34
练习:有一个列表,列中有数字和字符串两种类型的元素。要求将这个列表中的字符串全部放到另外一个列表中
例如:list1 = [1, 'ab', 303, 'hello', 89, 9, 90]
--> list1 = [1, 303, 89, 9, 90] 并且产生一个新的列表,list2 = ['ab', 'hello']
isinstance(10, int) # 判断10是否是整型
list1 = [1, 'ab', 'bbb', 'hello', 89, 9, 90]
index = 0 1
index = 1 'ab' list1 = [1, 'bbb', 'hello', 89, 9, 90]
index = 2 'hello'
list1 = [1, 'ab', 'bbb', 'hello', 89, 9, 90]
list2 = []
index = 0
while index < len(list1):
if isinstance(list1[index], str):
# 取出
item = list1.pop(index)
# 添加到新的列表中
list2.append(item)
continue
index += 1
print(list1, list2)
[1, 89, 9, 90] ['ab', 'bbb', 'hello']
4.改(修改列表元素的值)
列表[下标] = 新值 - 将列表中指定下标对应的元素修改成指定的值
list1 = [1, 2, 'abc', 4]
list1[2] = 3
print(list1)
[1, 2, 3, 4]
05.列表相关运算
1. +
列表1 + 列表2 - 使用两个列表中元素产生一个新的列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(list1 + list2)
print(list1, list2)
[1, 2, 3, 'a', 'b', 'c']
[1, 2, 3] ['a', 'b', 'c']
2. *
列表 * n(正整数) - 将列表中的元素重复n次,产生一个新的列表
print(list1*3)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
3. in和not in
元素 in 列表 判断指定的元素是否在指定的列表中
元素 not in 列表 判断指定的元素是否不在指定的列表中
names = ['小明', '路飞', '小花', '余婷']
if '余婷' in names:
print('恭喜,获奖了!')
else:
print('很遗憾!')
恭喜,获奖了!
print(['小明', '路飞'] in names) # False
False
4.len
len(列表) - 获取列表元素的个数
names = [['小明', '路飞'], '小花', '余婷', {'a': 12, 'b': 123}, lambda x: x*2]
print(len(names))
5
5.list
list(数据) - 将其他的数据转换成列表
注意: 这儿的数据,只能是序列(所有的序列都能转换成列表-将序列中的元素作为列表的元素)
str1 = 'hello'
print(list(str1))
print(list(range(10, 20)))
# print(list(100)) # TypeError: 'int' object is not iterable
['h', 'e', 'l', 'l', 'o']
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
6.max和min
max(列表) - 获取列表中元素的最大值
min(列表) - 获取列表中元素的最小值
注意:列表有要求:a. 列表中的元素的类型一样 b.元素对应的类型支持比较运算符
print(max([1, 45, 667, 3, 78, 90]))
print(min([1, 45, 667, 3, 78, 90]))
print(max(['ab', 'sk', 'zbs', '**(3']))
667
1
zbs
网友评论