鱼C论坛

 找回密码
 立即注册
查看: 3629|回复: 19

[技术交流] Python:每日一题 173

[复制链接]
发表于 2018-4-1 16:03:09 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 冬雪雪冬 于 2018-4-5 17:18 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:论坛内容防复制~
这次的题目是 @Chase_Kas 提供的,我编辑一下,重新发帖,供大家练习。

在做课后作业的过程中,阅读小甲鱼写的帖子,我发现了一个非常有趣的现象:


                               
登录/注册后可看大图


看着很普通的文字里面大有玄机!


                               
登录/注册后可看大图


是的!文字后边竟然还有字符......当然为了不显示,设置字体颜色为白色,在乱码的前后加上标记['color=White][/color'](去掉')。
另:原题目还要求对代码格式的部分不添加乱码,为了简化就不要求了。
写一个能够自动添加随机字符的程序,将文本文件的内容写入白色的随机字符,并输出为一个新文件。


@Chase_Kas  原贴已答题的鱼油将一同评分。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-1 16:44:38 | 显示全部楼层
  1. from random import *

  2. with open('G:\\a.txt')as f:
  3.     a=f.read().split('\n')
  4. with open('G:\\target.txt','a')as tag:
  5.     for e in a[:-1]:
  6.         t=''
  7.         for i in range(50-len(e)):
  8.             t+=chr(randint(32,126))
  9.         tag.write(e+'[color=White]'+t+'[/color]\n')
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-4-1 20:43:35 | 显示全部楼层
本帖最后由 天圆突破 于 2018-4-1 20:54 编辑
  1. from random import *
  2. from functools import reduce

  3. class Txt:
  4.     def __init__(self, file1):
  5.         self.txt = file1

  6.     def string(self, a, b):
  7.         return '[color=White]' + reduce(lambda x,y:x+y,list(chr(randint(33,126)) for i in range(randint(a,b)))) + '[/color]' + '\n'

  8.     def addcode(self, file2):
  9.         with open(self.txt,'r',encoding='utf-8') as f1 ,open(file2,'a',encoding='utf-8') as f2:
  10.             for each in f1:
  11.                 f2.writelines(each.strip() + self.string(5,10) + self.string(15,20))

  12. if __name__ == '__main__':
  13.     a = Txt('txt1.txt')
  14.     a.addcode('txt2.txt')
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-1 23:36:29 | 显示全部楼层
本帖最后由 shigure_takimi 于 2018-4-8 09:26 编辑
  1. #  不知道是不是这个意思
  2. import random
  3. from string import printable

  4. with open('1.txt', 'r') as f:
  5.         a = f.readlines()
  6. with open('2.txt', 'a') as f:
  7.         for i in a:
  8.                 s = ''
  9.                 for j in range(random.randint(10,30)):
  10.                         s += random.choice(printable)
  11.                 f.write(i.strip()+'[color=white]'+s+'[/color]'+'\n')
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 01:22:46 | 显示全部楼层
本帖最后由 凌九霄 于 2018-4-2 11:34 编辑
  1. import random

  2. source =['1、生肖鼠:渐有起色,戒除懒散。\n', '\n', '2、生肖牛:黯然不明,注意健康。\n', '\n', '3、生肖虎:稍有波动,三思而行。\n', '\n', '4、生肖兔:是非混杂,确保安全。\n', '\n', '5、生肖龙:艰难晦涩,小心应对。\n', '\n', '6、生肖蛇:多劳多得,争取主动。\n', '\n', '7、生肖马:展开行动,稳扎稳打。\n', '\n', '8、生肖羊:勇于进取,机遇难得。\n', '\n', '9、生肖猴:略有阻滞,隐忍为上。\n', '\n', '10、生肖鸡:与人为善,能忍自安。\n', '\n', '11、生肖狗:审时度势,谋定后动。\n', '\n', '12、生肖猪:诸事顺遂,居安思危。']


  3. with open(r'd:\test.txt', 'w') as F:
  4.     for i in source:
  5.         F.write(i)

  6. # 以上代码用于生成例子需要的文本文件

  7. with open(r'd:\test.txt') as F:
  8.     strtxt = F.readlines()


  9. def randomstring():
  10.     string = ''
  11.     for i in range(1, random.randint(10, 60)):
  12.         string += chr(random.randint(32, 127))
  13.     return '[color=White]' + string + '[/color]'


  14. with open(r'd:\modifytest.txt', 'w') as F:
  15.     for i in strtxt:
  16.         if i[:-2:-1] == '\n' or i == '\n':
  17.             F.write(i.replace('\n', randomstring()) + '\n')
  18.         else:
  19.             F.write(i + randomstring())
复制代码


360截图20180402113353319.jpg 360截图20180402113418162.jpg

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 08:35:14 | 显示全部楼层
题目没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 09:42:54 | 显示全部楼层
膜拜大佬们
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 10:24:00 | 显示全部楼层
  1. from random import randrange, choice

  2. def random_str():
  3.    
  4.     a = []
  5.    
  6.     for i in range(200):
  7.         a.append(chr(i))

  8.    
  9.    
  10.     slen = randrange(5, 30)
  11.     ss = ''.join(choice(a) for i in range(slen))

  12.     return ss

  13. print(random_str())
复制代码


不是很能理解题目的意思,只写了个添加乱码的函数。不知道怎么设置字体颜色为白色

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
冬雪雪冬 + 1 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 11:18:56 | 显示全部楼层
还是统一发这儿吧Z=8>q(jXgxym5g
  1. import easygui as g
  2. import random as r

  3. def randstr(amt):
  4.     return ''.join([chr(r.randint(32, 126)) for i in range(amt)])

  5. text = g.textbox(msg='请输入要防复制的内容...', title='请输入文本内容...')
  6. newtext = ''
  7. notcode = 1

  8. for eachline in text.splitlines():
  9.     if eachline == '':
  10.         lenth = r.randint(40, 60)
  11.     else:
  12.         lenth = r.randint(10, 20)

  13.     if ('[code'+']') in eachline:
  14.         notcode = 0
  15.     if ('[/code'+']') in eachline:
  16.         newtext += (eachline + '\n')
  17.         notcode = 1
  18.         continue
  19.         
  20.     newtext += (eachline + notcode*('[color=White]'+randstr(lenth)+'[/color]') + '\n')

  21. g.textbox(msg='添加随机字符后结果如下,复制即可.', title='结果...', text=newtext)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 12:52:31 | 显示全部楼层
import random
import string
with open('path/to/file/2.txt', 'w') as g:
    with open('path/to/file/1.txt', 'r') as f:
        for line in f:
            line1 = line+''+''.join(random.sample(string.ascii_letters + string.digits, 8))+''
            g.write(line1)

1.txt

10 Bytes, 下载次数: 1

点评

没有加字体白色标记  发表于 2018-4-5 17:27

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 14:26:34 | 显示全部楼层
  1. import random as r
  2. #生成随机字符串
  3. def randstr():
  4.     result_str = ''
  5.     length = r.randint(30,50)
  6.     for i in range(length):
  7.         result_str += chr(r.randint(33,126))    #加入可在屏幕上显示的字符
  8.     return result_str

  9. old_file = input('请输入要修改的文件的路径:')
  10. old_f = open(old_file,'r')
  11. new_f = open('result.txt','w')
  12. for each_line in old_f:
  13.     if each_line != '\n':
  14.         new_line = each_line[:-1] + '[color=White]' + randstr() + '[/color]\n'
  15.     else:
  16.         new_line = each_line
  17.     new_f.write(new_line)
  18. old_f.close()
  19. new_f.close()
  20. print('修改后的文件为此程序同目录下的result.txt')
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 15:29:04 | 显示全部楼层
真不会啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-2 19:50:21 | 显示全部楼层
本帖最后由 lan358088 于 2018-4-2 22:55 编辑

import random
import string
text_a='''
《零基础入门学习Python》视频下载地址         
                                    
测试题(笔试,不能上机哦~)     
         
'''
def add_str(text_a):
    flag=1
    while flag:
        if text_a.find(' ')==-1:
            flag=0
        ran_str =''+ ''.join(random.sample(string.ascii_letters + string.digits, 1))+''
        text_a=text_a.replace(' ',ran_str,1)
    return text_a
with open('temp.txt','w',encoding='utf-8')as f:
        f.write(add_str(text_a))

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 15:43:24 | 显示全部楼层
本帖最后由 graceasyi 于 2018-4-3 15:45 编辑

不知道乱码的长度,在程序中设置了64位。

  1. import random

  2. def gen_messy_code(n):
  3.     seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-{}[]\|:;'"<>?,./~`"
  4.     messy = ''.join([random.choice(seed) for i in range(n)])
  5.     return messy

  6. fd = open('173.txt', 'r')
  7. fw = open('new.txt', 'w')

  8. list1 = fd.readlines()
  9. for each in list1:
  10.     fw.writelines(each.rstrip('\n')+'[color=White]'+gen_messy_code(64)+'[/color]'+'\n')

  11. fd.close()
  12. fw.close()
复制代码


结果如下:

本帖最后由 冬雪雪冬 于 2018-4-1 16:07 编辑(rX`[1uoo"k/}Ny}r77llBX9l.tnnCdR2z:jOUDqu^@/_u,weTlwz7^BrDx<#^tv
我们的玩法做了一下改变:AJCU,$Tzb3}sMx7ep5=rU*e:e+([u<Aii?5E'<R!l,efO5t}=[Lf|1*FWZ~Gu3*=
1. 楼主不再提供答案。8Dk*III4oBZX&N,</82wj[uB6*oRSG5fNIs6*G{52p?U}2pk\NR]|%s*:)$0&yxQ
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。1]\l;6@{XH&kV:g&%jQl*sO\?xqj#ri7ob*)t`mDIQrLpBH4;?dL0mCAZZ+nw=2g
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。!rIhUko!*H(>Ony0|@c_S]edDs\TM44+)XI?E^$yG7w|il0r-s|*P>,++A%VM76t
4. 根据答案的质量给予1~3鱼币的奖励。SC)kWB}TK|aJr-4p:D%v_s1\3rO6-jsSo_&F!+/N:emZr<A@=1<#'\cTYGwKIB}Q

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-5 12:03:32 | 显示全部楼层
健康的啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-5 14:40:57 | 显示全部楼层
  1. import random
  2. def rstr():
  3.     rstr='!@#$%^&*AB CDEFGHIJklmnopqRSTuVwXYz( ){}_+/?123 098'
  4.     lx=''
  5.     for i in range(random.randint(6,20)):
  6.         lx=lx+random.choice(rstr)
  7.     return '[color=White]'+lx+'[/color]'

  8. with open('1.txt','r') as f:
  9.     with open('2.txt','a') as fn:
  10.         while True:
  11.             lc=f.readline()
  12.             if (lc!=''):
  13.                 lc=lc[:-1]+rstr()+'\n'
  14.                 fn.write(lc)
  15.             else:
  16.                 break
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-18 17:14:48 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2019-8-18 17:15 编辑
  1. from random import randint;l='~!@#$%^&*()_+`1234567890-={}|[]\:";\'<>?,./QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
  2. def func(words):return'\n'.join(i+'[color=White]'+''.join((l[randint(0,93)]for _ in range(32)))+'[/color]' for i in words.split('\n'))
复制代码

我们的玩法做了一下改变:1Perh9O4nTkE7hvL7cri40l(0r~(36r}
v|i(+[+v[0`g7S%xe2/;[_jS'N.*p/c)
1. 楼主不再提供答案。Xu`|krJ__W:zf_}24$T#EyF{RkizI06I
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。A"CF?sB@pw|Keekg$x87Jkla0~D!(Fi/
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。>gD4&mp=k1DB*9Uia3@5g{Lzt]L?Ln%I
4. 根据答案的质量给予1~3鱼币的奖励。7pA3gH687>7,iu}~Oj:<Y$/sd|1|M&PZ
Td^20ixZjh:_m7nu7e=m[jRj93agvUY{
题目:论坛内容防复制~LL2h{5\RX!E|'r(.h[vMD0&?Ub}b<!yi
这次的题目是 @Chase_Kas 提供的,我编辑一下,重新发帖,供大家练习。~la#PLli8cEyeXCNhJ=:K~5$q-C(G!>"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-6 15:33:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-12 17:05:00 | 显示全部楼层
试试效果Y5z^o].0F^`DUP!Dh?8;ps:d]c9V>P1!SxHMa`EZ;fvYA`U.$/%p]m@JyPnc`Dl1<OVo@[ZJ7*0]]T2Yj,qWfUo= go8!RNMU2(p2xr`aTIa S5K]o"Ai4<dSXwX`Y+f|+WLS&pE5lQ+xXS, F;rzTbah2{$K;,L.S/O&5cz/)hb^[of8y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 00:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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