鱼C论坛

 找回密码
 立即注册
查看: 2325|回复: 6

[已解决]for循环 好难理解呀,大伙帮忙

[复制链接]
发表于 2017-11-19 10:19:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 要学习 于 2017-11-19 10:24 编辑

昨天问了有关随机数组输出的问题。
最后热心帮主解决了,非常感谢

还是昨天的代码。
import random
b_list = range(000,100)
blist_webId = ['%03d'%i for i in random.sample(b_list, 10)]
print(blist_webId)



简单的一次随机写入一个文本我就会写:
如下
import random
file=open('data.txt','w')
b_list = range(000,100)
blist_webId = ['%03d'%i for i in random.sample(b_list, 10)]
file.write(str(blist_webId));
file.close()


我想加两个循环:一个加在写入文件名,一个加在 随机次数

让它实现 一次生成多组随机列,并且分别写入文本,

比如说,一次生成3个随机列表。(相当于执行 三 次 之前的代码)

['063', '048', '087', '052', '065', '050', '034', '041', '060', '025']
['021', '007', '085', '028', '053', '012', '073', '000', '095', '054']
['078', '092', '096', '051', '009', '049', '000', '010', '020', '095']
然后每个列表写入一个文本文件里。。
文件名分别为:000001.txt;000002.txt;000003.txt

这样的效果 要如何 添加 代码 来实现它呢?



最佳答案
2017-11-19 10:37:39
更推荐你用with...as...语句:
  1. import random
  2. length = int(input('请输入你想要生成组的数量:'))
  3. titlelist=['%06d.txt' % i for i in range(1,length+1)]
  4. for i in range(length):
  5.     with open(titlelist[i],'w') as f:
  6.         b_list = range(000,100)
  7.         blist_webId = ['%03d'%i for i in random.sample(b_list, 10)]
  8.         f.write(str(blist_webId))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-19 10:34:48 | 显示全部楼层
本帖最后由 BngThea 于 2017-11-19 10:37 编辑
  1. import random
  2. length = int(input('请输入你想要生成组的数量:'))
  3. titlelist=['%06d.txt' % i for i in range(1,length+1)]
  4. for i in range(length):
  5.     file=open(titlelist[i],'w')
  6.     b_list = range(000,100)
  7.     blist_webId = ['%03d'%i for i in random.sample(b_list, 10)]
  8.     file.write(str(blist_webId))
  9.     file.close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-19 10:37:39 | 显示全部楼层    本楼为最佳答案   
更推荐你用with...as...语句:
  1. import random
  2. length = int(input('请输入你想要生成组的数量:'))
  3. titlelist=['%06d.txt' % i for i in range(1,length+1)]
  4. for i in range(length):
  5.     with open(titlelist[i],'w') as f:
  6.         b_list = range(000,100)
  7.         blist_webId = ['%03d'%i for i in random.sample(b_list, 10)]
  8.         f.write(str(blist_webId))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-19 11:36:20 | 显示全部楼层
BngThea 发表于 2017-11-19 10:37
更推荐你用with...as...语句:

老师好。。

我在后面加多一句 就报错了。。

什么原因呢?

  1.         b_list = range(000,100)
  2.         blist_webId = ['%03d'%i for i in random.sample(b_list, 10)]
  3.         bblist = '\n'.join([str(t) for t in blist_webId])
  4.         file.write(str(bblist))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-19 11:40:24 | 显示全部楼层
要学习 发表于 2017-11-19 11:36
老师好。。

我在后面加多一句 就报错了。。

FOR 循环的 就正常运行。
好奇怪哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-19 11:57:12 From FishC Mobile | 显示全部楼层
要学习 发表于 2017-11-19 11:36
老师好。。

我在后面加多一句 就报错了。。

报错的什么提示?
你添加代码想要做什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-19 12:11:02 | 显示全部楼层
BngThea 发表于 2017-11-19 11:57
报错的什么提示?
你添加代码想要做什么


就是对 列表进一步处理而已。。

添加进with as 里的 运行报错

添加 进 For循环里 ,同样的代码 ,运行正常、、



========================= RESTART: C:\Python27\1.py =========================

Traceback (most recent call last):
  File "C:\Python27\1.py", line 23, in <module>
    file.write(str(bblist))
TypeError: descriptor 'write' requires a 'file' object but received a 'str'
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 23:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表