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回车进入下一关~


1 0