0%

第一周和第二周作业

第一周作业

exercise1:考察随机数的获取

循环实现班级随机抽奖,假设有10排,每排10个同学,输出结果如下: 第7排,1列同学中奖

1
2
3
4
5
6
7
8
'''
循环实现班级随机抽奖,假设有10排,每排10个同学,输出结果如下:
第7排,1列同学中奖
'''
import random
row = random.randint(1, 10)
col = random.randint(1, 10)
print(f"第{row}, {col}列同学中奖")

第二周作业

exercise1:考察列表中常用操作

1
2
3
4
5
6
7
8
9
10
11
'''
编程实现对一个元素全为数字的列表,求最大值、最小值.
'''
list = [99,23,-1,199,888]
list.sort()
maxNum = list[-1]
minNum = list[0]
print(f"max = {maxNum}")
print(f"min = {minNum}")
print(f"max = {max(list)}")
print(f"min = {min(list)}")

exercise2:join的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
'''
完成一个路径的组装
先提示用户多次输入路径,最后显示一个完整的路径,比如/home/python/ftp/share
'''
strList = []
while True:
substr = input("请输入文件夹名称")
if(substr != 'exit'):
strList.append(substr)
else:
break
char = '/'
path = char.join(strList)
print('/' + path)

exercise3:考察字符串中常用操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'''
# 3.统计用户通过键盘输入的字母,数字,空格的个数
'''
countAlp = 0
countNum = 0
countBlank = 0
str = input("请输入一段话")
for i in range(len(str)):
if str[i].isalpha():
countAlp += 1
elif str[i].isnumeric():
countNum += 1
elif str[i] == ' ':
countBlank += 1
print(f'alphabet is {countAlp}')
print(f'number is {countNum}')
print(f'blank is {countBlank}')

exercise4:考察字典中常用操作

1
2
3
4
5
6
7
8
9
10
11
12
'''
# 5.编写程序,完成以下要求:
# 统计字符串中,各个字符的个数
'''
dic = {}
str = input("请输入一段话:")
for char in str:
dic[char] = str.count(char)

items = dic.items()
for key, value in items:
print(f"{key}:{value}")

exercise5:

生成指定范围随机数

字符串的拼接

字符串拼接就必须全部转换成字符串

获得字母的ASCII码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'''
# 6.随机生成一个六位数的验证码(包含数字和字符)
'''
import random
string = ""
for i in range(6):
choose_num_or_char = random.randrange(0, 2)
if choose_num_or_char == 0: # 生成数字
add = random.randrange(1, 10)
string += str(add)
else: # 生成字母
add = random.randrange(1, 26)
add = chr(ord('a') + add - 1)
string += add
print(string)

exercise6:

字符串空格的操作

字符串起始位置的查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
'''
#7.查找列表元素,移除每个元素的空格,
并查找以a 或A开头 并且以c 结尾的所有元素。
li = ["alex", " aric", "Alex", "Tony", "rain"]
'''
li = ["alex", " aric", "Alex", "Tony", "rain"]
print(li)
target = []
for item in li:
item = item.strip()
if (item.startswith('a') or item.startswith('A')) and item.endswith('c'):
target.append(item)
print(li)
print(target)

exercise7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
9. 分页显示内容
a. 通过for循环创建301条数据,数据类型不限,如:

user1   email-1   pwd1

user2   email-2   pwd2

.........

b.提示用户 请输入要查看的页码,当用户输入指定页码时,显示指定数据

注意:

  - 每页显示10条数据

  - 用户输入页码是非十进制数字,则提示输入内容格式错误

"""

import random

def getRandomStr(length):
string = ""
for i in range(length):
choose_num_or_char = random.randrange(0, 2)
if choose_num_or_char == 0: # 生成数字
add = random.randrange(1, 10)
string += str(add)
else: # 生成字母
add = random.randrange(1, 26)
add = chr(ord('a') + add - 1)
string += add
return string

records = []
record_per_page = []
for i in range(301):
if i % 10 == 0 and i != 0:
records.append(record_per_page)
record_per_page = []
information = {}
information["user"] = getRandomStr(6)
information["email"] = getRandomStr(10) + "@163.com"
information["pwd"] = getRandomStr(12)
record_per_page.append(information)
records.append(record_per_page)
yema = input("请输入查询页码")
if yema.isdigit() == True:
yema = int(yema)
for people in records[yema]:
for key, value in people.items():
print(f"{key}--{value}", end=" ")
print()
else:
print("输入有误")

上面代码在第一次写在 record_per_page = [] 写成了 record_per_page.clear()

虽然都是清空列表,但第一种写法是将record_per_page指向一个新对象,而第二种写法没有

所以第二种写法导致的问题就会出现改一个跟着改了几个

问题简化就是下面这种情况

修改inner的同时out也被改变