鱼C论坛

 找回密码
 立即注册
查看: 1619|回复: 9

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

 关闭 [复制链接]
发表于 2018-3-31 19:12:00 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 冬雪雪冬 于 2018-4-1 16:04 编辑

本帖关闭,请移步到http://bbs.fishc.com/thread-108049-1-1.html 答题。

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

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

题目:
这次的题目是 @Chase_Kas 提供的,我直接编辑一下,供大家练习。考虑到用easygui或tkinter等有的鱼油不会,也可以改成读取文本文件,写入白色的随机字符,并输出成一个新文本文件。
以上部分由 @冬雪雪冬 编辑添加。
======================================================================
论坛内容防复制~

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

课后作业内容

课后作业内容


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

没想到吧...

没想到吧...


是的!文字后边竟然还有字符......

聪明的你应该猜到了怎么做到的了:后边的那些字符字体颜色是白色,融入到了白色背景之中~~

至于为什么这么做,我的猜想是:在以前不能防止复制的时候,可以通过这种方式来阻碍不法之人复制这些珍贵的帖子(有知道真正原因的大佬烦请回复下)
我的想法就是在自己写的帖子或者回复中也能添加这样的随机字符,是不是很炫酷~~~~

例如我写的课后作业的笔记:

测试题
0、迭代就是一次循环的过程,迭代的结果作为下一次迭代的初始值。
1、不是吧,容器都可以存放了具体数据,而迭代器是在一次次迭代过程中产生数据
2、不可以,在第0题中提到了,一次迭代过程的结果作为下一次的初始值,这样的过程是不可逆的
3、看是否有__iter__和__next__魔法方法
4、迭代器取空后会抛出StopIteration这样一个异常,用try-except检测这个异常即可
5、集合

在处理过后:
测试题Vg_n[2t$+
0、迭代就是一次循环的过程,迭代的结果作为下一次迭代的初始值。cL]mx
1、不是吧,容器都可以存放了具体数据,而迭代器是在一次次迭代过程中产生数据fyzHaoZ#H$
2、不可以,在第0题中提到了,一次迭代过程的结果作为下一次的初始值,这样的过程是不可逆的g<#:W
3、看是否有__iter__和__next__魔法方法QUu+`CHEA)
4、迭代器取空后会抛出StopIteration这样一个异常,用try-except检测这个异常即可&3d:Z5
5、集合-*V>tUV

是不是看着没啥区别?试着用左键选中一下吧~~

是的!我要出的题目就是写一个能够自动添加随机字符的程序
把你的文本输入到easygui.textbox()(或者保存到文本中,用easygui的好处就是像记事本一样可以自己输入,我还没学到Tkinter,有能力的可以用哦)


2

2


确认后就生成结果啦,复制以后就能在论坛中发布了,带防伪标记的哦~

1

1


在上边图片中可能一些朋友也看出来问题了
0、用while实现for循环wELVPA
  1. it = iter(range(5))[color=White]=N_Wm'.,![/color]
  2. while True:[color=White]k?t0$[/color]
  3.     try:[color=White].m,:}w[/color]
  4.         print(next(it))[color=White]vTxe+,{S8[/color]
  5.     except StopIteration:[color=White]x#GUPaKg(-[/color]
  6.         break
复制代码
8jF5K

对于用[code']’和[/code'](去掉')圈起来的代码,在后面添加的字符并不能设置为白色,所以要判断,不能在代码的后面添加字符

提示:1、论坛里面用['color=White][/color'](去掉')圈起来的文本会被设置为白色
2、空白行的随机字符串要长一些,有文本的行末字符串要短一些


哇...论坛排版真的难,等我学好了,一定要写个程序:可以像word一样界面排版,然后生成可以在论坛发布的文本(立个小FLAG)
@冬雪雪冬

评分

参与人数 2荣誉 +20 鱼币 +20 贡献 +10 收起 理由
冬雪雪冬 + 10 + 10
alltolove + 10 + 10 + 10 有想法~

查看全部评分

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

使用道具 举报

发表于 2018-3-31 19:40:33 | 显示全部楼层
你真棒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 19:41:33 | 显示全部楼层

老哥你这样让我不知道你是夸还是讽刺啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-31 19:45:08 | 显示全部楼层
Chase_Kas 发表于 2018-3-31 19:41
老哥你这样让我不知道你是夸还是讽刺啊

你真的很棒啊,我也没学到Tkinter但是我做不出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-31 21:21:14 | 显示全部楼层
然而我做的课后题都是别人用图片挖的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 21:57:48 | 显示全部楼层
塔利班 发表于 2018-3-31 21:21
然而我做的课后题都是别人用图片挖的

截图这个就是真没办法,只要能看到的内容都会被截图,也有看到小甲鱼课后作业截图版的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 22:36:04 | 显示全部楼层
本帖最后由 Chase_Kas 于 2018-3-31 22:47 编辑

出题的时候就写的差不多了,就是没有判断是不是代码,改下就OK了~a% q\<NEc6qpWoi>+)
J:-|G4C,%u(hk50f=P3w8_^8{-9$bKa]$eNuO!1=GF7]6[c4O~63=mK
  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)
复制代码

hrW/@F28y],5_q<5FezJM)8qzC{_|EJBdhg=lWi=rtNd`.xUHc)_0"U(l(

点评

已在另一贴评分。  发表于 2018-4-5 17:34
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-31 23:19:41 | 显示全部楼层
不知道怎么形容的一道题,栗子代码也加了,我就加了,,
  1. import easygui as g
  2. from random import *
  3. tb=g.textbox(msg='请输入要防复制的内容',title='请输入文本内容')
  4. a=tb.split('\n')
  5. result=''
  6. for each in a[:-1]:
  7.     x=''
  8.     for i in range(20-len(each)):
  9.         x+=chr(randint(0,255))
  10.     z='[color=White]'+x+'[/color]'
  11.     result+=each+z+'\n'
  12. print(result)
  13. g.textbox(msg='添加随机字符后结果如下,复制即可',title='结果...',text=result)
复制代码

点评

已在另一贴评分。  发表于 2018-4-5 17:34
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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