☰
猜盲盒2行代码
2026/10/1 11:34:12 网站建设 项目流程

1.导入并认识random库

要想导入,开头必须用import,是导入的意思,random随机生成,和在一起就是

importrandom

random.random():返回 [0,1] 的随机浮点数
random.uniform(a, b):返回 [a,b] 的随机浮点数
random.randint(a, b):返回 [a,b] 的随机整数
random.choice(seq):从序列中随机选一个元素
random.shuffle(seq):原地打乱序列顺序
random.sample(seq, k):从序列中取 k 个不重复元素组成新列表
猜盲盒需要用到random.randint(a, b),比如

importrandomprint(random.randint(100,123))#生成一个100到123的随机整数

2.打印盲盒,提供信息

我们要猜,就要给出信息,为了避免信息太多,我们就打印5个盲盒吧(正常用法)

foriinrange(5):print('|-----|')print('| ? |')print('|-----|')

可以通过\n来压行

foriinrange(5):print('|-----|\n| ? |\n|-----|')

要想再把for压,可以列表,最后输出

print(*['|-----|\n| ? |\n|-----|\n'foriinrange(1,6)],sep='')

我们打印时要有空隙,所以

print(*['|-----|\n| ? |\n|-----|\n\n'foriinrange(1,6)],sep='')

3.猜盲盒的重要部分

输入时tips:第几个盲盒?也就是

input('第几个盲盒?')

(我自己想的)如果用户一次就猜对了,打印3星,如果用户3次都没猜对,打印失败,否则打印1星(正常用法)

importrandomasrd rd_=rd.randint(1,5)print(*['|-----|\n| ? |\n|-----|\n\n'foriinrange(1,6)],sep='')foriinrange(3):ifi==0andint(input('第几个盲盒?'))==rd_:print('3星')breakelifint(input('第几个盲盒?'))==rd_:print('1星')breakelse:print('失败')

if-else的压缩方法是内容 if 条件 else 内容,可elif条件没法弄,可以分成2段

importrandomasrd rd_=rd.randint(1,5)print(*['|-----|\n| ? |\n|-----|\n\n'foriinrange(1,6)],sep='')ifint(input('第几个盲盒?'))==rd_:print('3星')else:foriinrange(2):ifint(input('第几个盲盒?'))==rd_:print('3星')else:print('失败')

这样的话就有2个if-else了,没有elif
关键是怎么把这8行压成1行呢?

importrandomasrd rd_=rd.randint(1,5)print(*['|-----|\n| ? |\n|-----|\n\n'foriinrange(1,6)],sep='')print('3星'ifint(input('第几个盲盒?'))==rd_else???)

我们可以反着用!=

importrandomasrd rd_=rd.randint(1,5)print(*['|-----|\n| ? |\n|-----|\n\n'foriinrange(1,6)],sep='')print(???ifint(input('第几个盲盒?'))!=rd_else'3星')

可以用列表,可怎么才能把列表变成布尔值呢?
all既解决了布尔值的问题,也解决了for-else的问题

importrandomasrd rd_=rd.randint(1,5)print(*['|-----|\n| ? |\n|-----|\n\n'foriinrange(5)],sep='')print(('1星'ifall([int(input('第几个盲盒?'))==rd_foriinrange(2)])else'失败')ifint(input('第几个盲盒?'))!=rd_else'3星')

4.极限简化

再简化,用__ import __()

rd_=__import__('random').randint(1,5)print(*['|-----|\n| ? |\n|-----|\n\n'foriinrange(5)],sep='')print(('1星'ifall([int(input('第几个盲盒?'))==rd_foriinrange(2)])else'失败')ifint(input('第几个盲盒?'))!=rd_else'3星')

再简化,用lambda

print(*['|-----|\n| ? |\n|-----|\n\n'foriinrange(5)],sep='')print((lambdard_:('1星'ifall([int(input('第几个盲盒?'))==rd_foriinrange(2)])else'失败')ifint(input('第几个盲盒?'))!=rd_else'3星'(__import__('random').randint(1,5)))

就那么“简单”

5.总结

今天学习了random库,for循环,列表,for-else,!=,if-else压缩方法,all,__ import __(),lambda

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询