The python challenge 01————首次用字符串和for循环
来源:互联网 发布:win32系统编程 pdf 编辑:程序博客网 时间:2024/06/16 05:44
发现了一个好玩的闯关游戏~刚好对python有兴趣就顺便学学咯~
期间除了有源代码还有一些python的学习笔记
http://www.pythonchallenge.com/
这个图更是简略.....我感觉这个稍微有点解码常识的人都会想到吧..
K->M
O->Q
E ->G
明显是ASCII+2,下边的提示一串紫色乱码...那肯定是按照这个规则把乱码翻译一下咯。
但是我不会字符串啊...没事慢慢学呗。
Python字符串定义很简单
s = “xxxxxxxxxxxxx”和C很不一样了就,不过完全可以接受,但是Python中的字符串很奇怪,一旦被赋值后不能更改!(我在这个地方吃亏了)
意思就是如果声明定义完毕后,你想更改s[0]的值,比如:s[0] = 'y' 抱歉这样是不行的.....
(Tip1 :Python中不需要事先声明变量,s = "xxxxxxxxx"这条语句就告诉Python声明并定义一个字符串变量s)
(Tip2: Python中没有类似C语言中char这种类型的字符串,也就是说即使是单个字符也是字符串)
(Tip3: Python虽然字符串中的某一个字符不能重新赋值,但是字符串与字符串之间可以,例如:
str1 = "asjdlasjdaljdlsajdjasj"str2 = "kkkkkkkkkkkkkkkkk"str2 = str1print(str2)输出结果是asjdlasjdaljdlsajdjasj)
大概就是这样子,然后就开始吧!
word = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp.bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."new_word = ''for char in word: if char.isalpha() and char not in "yz": new_word += chr(ord(char)+2) elif char == 'y': new_word += 'a' elif char == 'z': new_word += 'b' else: new_word += charprint(new_word)
在写上述代码的时候,出现了一个错误
SyntaxError: EOL while scanning string literal
不知道因为什么,后来百度一下才发现,"yz"我写成了"yz',引号不匹配就会出现这种问题,新手容易犯错
OK,分析一下思路:
既然字符串不可修改我们就新建一个字符串new_wrod(再次提醒对象不需要声明看Tip1)Python的for循环很不一样
for char in word:(其中for in : 是系统保留的)
这句中,如果是C语言,char就相当于word[i]这么一说就明白了。而且这条语句的结束必须有:
初学者(例如我)就很容易忘,而且不同于C语言,循环是没有大括号括起来的,一切都依靠TAB缩进(这有助于我们严格规范程序的结构)
然后有三个函数
ord(char) 是求字符所对应的ASCII码的。Tip4 : 不同于C语言,字符和数字是不可以直接相加的
chr(num)很显然就是把数字转换成字符了,没什么好说的。
char.isalpha()判断char是不是字母,是的话返回true
至于elif呢,其实就是else if(天知道为什么偷懒写成这样...)注意判断结构也是要求冒号和缩进的。
然后代码运行结果如下:
i hope you didnt translate it by hand. thats what computers are for.doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url.
(我希望你不是用笔翻译的....那是计算机应该做的事情,手算太没效率了并且这是为什么这段文本这么长的原因。推荐使用string.maketrans()函数.现在应用与URL上)
string.maketrans()函数:
这是官方定义
string.maketrans(from, to):Return a translation table suitable for passing to translate(), that will map each character in from into the character at the same position in to; from and to must have the same length
不过我试了多种方法都不行...import了string也没用....(附上一个链接可能有用吧http://bbs.csdn.net/topics/360106841)
然后继续本关...说把这个程序应用在URL上..
http://www.pythonchallenge.com/pc/def/map.html
很显然只能应用与map..(其他的都和第0关的一样想也知道不能改)
最后得出ocr这个答案替换map回车进入下一关~
- The python challenge 01————首次用字符串和for循环
- Python——while和for循环
- Python——for循环
- The python challenge 01
- The python challenge 00————python不怕大数
- The python challenge 02————字典、读写文件、raw string
- python整理三——用字典格式化字符串
- python基础(03)——while循环和for循环
- Python Challenge闯关游戏——持续更新
- 涉水The Python Challenge
- The python challenge 00
- the python challenge
- The Python Challenge
- the python challenge 解答
- The Python Challenge 题解
- python——用lambda函数替换for循环
- python 用字符串生成词云图
- 循环结构语句——For循环
- GoodZhang在学Python(十)--类和对象
- POJ1844 Sum
- 新装Oracle 11g忘记密码
- android如何实现开机自动启动Service或app(转)
- APK root权限静默安装、卸载
- The python challenge 01————首次用字符串和for循环
- SRM 630 DIV2
- Android高手应该精通哪些内容?
- JDK内置工具使用
- 生产者消费者模型的四种java编程例子
- 转 ofbiz的webservice接口提供(2)-数据类型的局限性
- 重邮ubuntu openkeeper代替netkeeper上网
- IOS开发之──应用之间调用(1)
- jQuery学习笔记之"$"