用Java解PythonChallenge(第一天)

本文介绍了一个基于Python的学习游戏——Python挑战。通过解答一系列谜题,玩家可以逐步提高自己的Python编程技巧。文章提供了前三关的Java实现示例,包括计算指数、字符串替换及从文件中读取特定字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url]www.pythonchallenge.com[/url]是一个学习python语言的过关游戏,非常有意思。很早以前就知道了这个网站,但是因为python水平不佳,所以一直想等水平再高一点点再去玩。
周五的时候和同事们谈论起了Python,Ruby等动态语言与Java语言相比的一些优势,我举了pythonchanllenge中的第0题:计算2的38次方的例子,结果几个同事都对此产生了兴趣,不断的去用java来攻关,呵呵,希望大家也参与到进来,给出你的方法:)

玩法介绍:我代码注释中的网址就是题目,过关方式是将题目的答案替换掉url中的题号,比如第0题的题目是[url]http://www.pythonchallenge.com/pc/def/0.html[/url],过关方法就是计算出2的38次方以后,将答案274877906944.html替换掉0.html,[url]http://www.pythonchallenge.com/pc/def/274877906944.html[/url]即第1题的题目,以此类推。

1.

import java.math.BigDecimal;

//http://www.pythonchallenge.com/pc/def/0.html
public class ChallengeZero {
public static void main(String[] args) {
BigDecimal a = new BigDecimal(2);
BigDecimal b = a.pow(38);
System.out.print(b);
}
}


2.

public class ChallengeOne {
// http://www.pythonchallenge.com/pc/def/map.html
public static void main(String[] args) {
String from = "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. ";
//String from = "map";
String to = new ChallengeOne().translate(from);

System.out.println(to);
}

public String translate(String s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
if (String.valueOf(s.charAt(i)).matches("[A-Z]|[a-z]")) {
if (s.charAt(i) == 'y') {
sb.append('a');
} else if (s.charAt(i) == 'z') {
sb.append('b');
} else {
sb.append((char) (s.charAt(i) + 2));
}
} else {
sb.append(s.charAt(i));
}
}
return sb.toString();
}
}

[color=blue]注:题目中的那串字符串的最终意思是让你用写好的转换方法来转换url中的单词,也就是map[/color]

3.

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class ChallengeTwo {
// http://www.pythonchallenge.com/pc/def/ocr.html
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader(System.getProperty("user.dir")+"\\ocr.txt"));
String temp=null;
while ((temp=br.readLine()) != null) {
for(int i=0;i<temp.length();i++){
if(String.valueOf(temp.charAt(i)).matches("[A-Z]|[a-z]")){
System.out.print(temp.charAt(i));
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

[color=blue]注:网页的源码中有用注释写的一段乱码,其中混杂着几个英文字母,我们要做的就是将其中的英文字母找出来[/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值