Python之作业(三)
练习题
- 给出3个整数,使用if语句判断大小,并升序输出
- 有一个列表lst = [1,4,9,16,2,5,10,15],生成一个新列表,要求新列表元素是lst相邻2项的和
- 随机生成100个产品ID,ID格式如下
- 顺序的数字6位,分隔符点号,10个随机小写因为字符
- 例如:000005.xcbaaduixy
1. 给出3个整数,使用if语句判断大小,并升序输出
x = [1, 5, 3] #6种可能,索引:0,1,2 0,2,1 1,0,2 1,2,0 2,0,1 2,1,0
y = []
if x[0] > x[1]: # 条件0比1大进入
if x[1] > x[2]: # 1大于2进入
y = [2, 1, 0]
else: # 1<2 2>1
if x[0] > x[2]:
y = [1, 2, 0]
else: # 1<2的另一种可能
y = [1, 0, 2]
else: # 条件0比1小
if x[0] > x[2]:
y = [2, 0, 1]
else:
if x[1] > x[2]:
y = [0, 2, 1]
else:
y = [0, 1, 2]
# print([x[i] for i in y]) # 列表解析式
print((list(x[i] for i in y))) # 生成器表达式
2.有一个列表lst = [1,4,9,16,2,5,10,15],生成一个新列表,要求新列表元素是lst相邻2项的和
x = [1, 3, 5]
y = []
for i in range(len(x) -1):
y.append(x[i] + x[i+1])
print(y)
# 返回结果:[4, 8]
x = [1, 3, 5]
y = []
y = [x[i] + x[i+1] for i in range(len(x) -1)]
# 列表解析式的写法
print(y)
# 返回结果:[4, 8]
注释:不能被规模影响,先试3个数,3个数相邻加没问题再多也没问题了。
x = [1, 4, 9, 16, 2, 5, 10, 15]
y = []
y = [x[i] + x[i+1] for i in range(len(x) -1)]
# 列表解析式的写法
print(y)
# 返回结果:[5, 13, 25, 18, 7, 15, 25]
3.随机生成100个产品ID,ID格式如下
顺序的数字6位,分隔符点号,10个随机小写英文字符
例如:000005.xcbaaduixy
import random
x = [chr(0x61 + i) for i in range(26)]
for i in range(10):
print("{:0>6}.{}".format(i+1, "".join(map(str, random.choices(x, k=10)))))
代码分析
需求是生成产品ID,有两部分前面是顺序的数字6位,分隔符点号,后面是10个随机小写英文字符。
1、先取出10位连续的英文字符可以重复取。
x = 'abcdefghijklmnopqrstuvwxyz'
# 第1种:额,手敲的,因为变量设定一次多次取,手敲也不失为一种办法。
import string
print(string.ascii_lowercase)
# 第2种:导入string模块,使用ascii_lowercase方法获取
alphabet = "".join(chr(i) for i in range(0x61, 0x61+26))
alphabet
# 第3种:直接去ascii编码表的内容
import random
x = [chr(0x61 + i) for i in range(26)]
for i in range(10):
print("{:0>6}.{}".format(i+1, "".join(map(str, random.choices(x, k=10)))))
# 这是我自己写的取值方法
代码解析:
1、先导入random模块
2、定义一个x变量,内容是取Ascii码表的0x61 + i的值也就是26个字母
3、定义一个for循环,迭代对象是range(10),按题目要求应该写range(1, 101)
4、print,format函数,第一个大括号中{:0>6}的意思是右对齐空格补零总空格最多6个,然后使用join方法连接,map变形一下,在用random
模块的choices方法取x的值,k=10指定取10次。