第一题 使用列表解析式 打印九九乘法表
- 方法一,事中实行图形绘制
[print("{}*{}={:<3}".format(j, i, j*i), end="\n" if j == i else "") for i in range(1,10) for j in range(1,i+1)]
注:{ : < 3}表示{ }里的宽度为3,<为左对齐,默认右对齐
- 方法二,事中实行图形绘制
[print("{}*{}={:<3}{}".format(j, i, j*i, "\n" if i == j else ""), end="") for i in range(1,10) for j in range(1,i+1)]
注:此方法多使用了个{ },意思是讲如果i=j,则使用换行符,否则不换行
- 方法三,事后实行图形绘制
print("".join([ "{}*{}={:<3}{}".format(j, i, i*j, "\n" if i==j else "") for i in range(1,10) for j in range(1,i+1)]))
注:此方法使用了join
join:指将可迭代对象连接起来,使用’’’'作为分隔符,默认在""内不填写为空白符
可迭代对象本身元素都是字符串
返回一个新字符串
第二题 使用列表解析式生成 “0001.abadicddws” 格式的ID号
要求ID格式是以点号分割,左边是4位从1开始的整数,右边是10位随机小写英文字母。
请依次生成前100个ID的列表,如图:
'0001.bbcomlkdyt'
'0002.yzjudytpna'
'0003.zycscjsvfy'
'0004.hhvqzlukui'
'0005.xissuxwsou'
- 方法一
import random
[print("{:04}.{}".format(i,"".join([ chr(random.randint(97,122)) for j in range(10)]))) for i in range(1,101)]
注:
{:04}指宽度为4,默认右对齐,其余空白部分用0填充。
random.randint(97,122)指生成指定区间的整数,前包后包。
chr()给定一个范围的整数返回对应的字符,即ASCII编码值
如chr(48)为0;chr(57)为9;chr(65)为A;chr(90)为Z;chr(97)为a;chr(122)为z。
- 方法二
import random
[print("{:04}.{}".format(i,"".join([random.choice(bytes(range(97,123)).decode()) for j in range(10)]))) for i in range(1,101)]
注:
random.choice 此模块的意思指在()内随机生成一个值
bytes(range(97,123)).decode 指生成97至123,前包后不包
- 方法三
import random
import string
[ print("{:04}.{}".format(i, "".join([random.choice(string.ascii_lowercase) for _ in range(10)]))) for i in range(1,101)]
注:
string.ascii_lowercase 指默认生成所有小写字母
random.choice 此模块的意思指在()内随机生成一个值
join:指将可迭代对象连接起来,使用’’’'作为分隔符,默认在""内不填写为空白符;可迭代对象本身元素都是字符串;返回一个新字符串