鱼C论坛

 找回密码
 立即注册
查看: 4405|回复: 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 | 显示全部楼层
from random import *

with open('G:\\a.txt')as f:
    a=f.read().split('\n')
with open('G:\\target.txt','a')as tag:
    for e in a[:-1]:
        t=''
        for i in range(50-len(e)):
            t+=chr(randint(32,126))
        tag.write(e+''+t+'\n')

评分

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

查看全部评分

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

使用道具 举报

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

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

    def string(self, a, b):
        return '' + reduce(lambda x,y:x+y,list(chr(randint(33,126)) for i in range(randint(a,b)))) + '' + '\n'

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

if __name__ == '__main__':
    a = Txt('txt1.txt')
    a.addcode('txt2.txt')

评分

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

查看全部评分

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

使用道具 举报

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

with open('1.txt', 'r') as f:
        a = f.readlines()
with open('2.txt', 'a') as f:
        for i in a:
                s = ''
                for j in range(random.randint(10,30)):
                        s += random.choice(printable)
                f.write(i.strip()+''+s+''+'\n')

评分

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

查看全部评分

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

使用道具 举报

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

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、生肖猪:诸事顺遂,居安思危。']


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

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

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


def randomstring():
    string = ''
    for i in range(1, random.randint(10, 60)):
        string += chr(random.randint(32, 127))
    return '' + string + ''


with open(r'd:\modifytest.txt', 'w') as F:
    for i in strtxt:
        if i[:-2:-1] == '\n' or i == '\n':
            F.write(i.replace('\n', randomstring()) + '\n')
        else:
            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 | 显示全部楼层
from random import randrange, choice

def random_str():
    
    a = []
    
    for i in range(200):
        a.append(chr(i))

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

    return ss

print(random_str())

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

评分

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

查看全部评分

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

使用道具 举报

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

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

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

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

    if ('[code'+']') in eachline:
        notcode = 0
    if ('[/code'+']') in eachline:
        newtext += (eachline + '\n')
        notcode = 1
        continue
        
    newtext += (eachline + notcode*(''+randstr(lenth)+'') + '\n')

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 | 显示全部楼层
import random as r
#生成随机字符串
def randstr():
    result_str = ''
    length = r.randint(30,50)
    for i in range(length):
        result_str += chr(r.randint(33,126))    #加入可在屏幕上显示的字符
    return result_str

old_file = input('请输入要修改的文件的路径:')
old_f = open(old_file,'r')
new_f = open('result.txt','w')
for each_line in old_f:
    if each_line != '\n':
        new_line = each_line[:-1] + '' + randstr() + '\n'
    else:
        new_line = each_line
    new_f.write(new_line)
old_f.close()
new_f.close()
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位。
import random

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

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

list1 = fd.readlines()
for each in list1:
    fw.writelines(each.rstrip('\n')+''+gen_messy_code(64)+''+'\n')

fd.close()
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 | 显示全部楼层
import random
def rstr():
    rstr='!@#$%^&*AB CDEFGHIJklmnopqRSTuVwXYz( ){}_+/?123 098'
    lx=''
    for i in range(random.randint(6,20)):
        lx=lx+random.choice(rstr)
    return ''+lx+''

with open('1.txt','r') as f:
    with open('2.txt','a') as fn:
        while True:
            lc=f.readline()
            if (lc!=''):
                lc=lc[:-1]+rstr()+'\n'
                fn.write(lc)
            else:
                break

评分

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

查看全部评分

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

使用道具 举报

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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