Python -- 列表解析式习题:九九乘法表、ID号

第一题 使用列表解析式 打印九九乘法表

  • 方法一,事中实行图形绘制
[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:指将可迭代对象连接起来,使用’’’'作为分隔符,默认在""内不填写为空白符;可迭代对象本身元素都是字符串;返回一个新字符串

你可能感兴趣的:(Python -- 列表解析式习题:九九乘法表、ID号)