最近、インターネット上で非常に興味深い Python ゲーム クリアランス Web サイトを見ました。レベルは全部で 33 あります。各レベルでは、Python の知識を使用して問題を解決し、答えを見つける必要があります。次のレベル。 Python の包括的な習熟度をテストします。たとえば、一部のレベルでは正規表現の使用が必要で、一部のレベルではクローラーの使用が必要です。
私たちは通常、章順、パッケージ、またはモジュールで Python を学習しますが、学習後は忘れがちです。この Web サイトを使用して、Python の習熟度を包括的にテストし、ギャップを見つけて埋めることができます。
このウェブサイトのプレイ方法について話しましょう。
こちらがこのサイトのメインページですが、10年以上前から存在している歴史を感じますね。ただし、アンティークっぽいからといって侮ってはいけません。
楽しんでみましょう。「チャレンジする」をクリックしてチャレンジを開始してください。
レベル 0 は、ウォーミングアップ ウォームアップ セッションです:
このレベルの要件は、URL リンクを変更することであり、与えられるプロンプトはコンピューター上の数式です。 2 の 38 乗なので、おそらく値を計算し、URL を変更して次のレベルに入る必要があります。
このレベルは Python の基本的な数値演算のテストです。計算方法は知っていますか?
Python 独自のターミナルを開くと、1 行のコードで結果を計算できます:
元のリンクの 0 を 274877906944 に置き換えて、Enter キーを押します。次のページに進むには レベル 1:
#ゲームが正式に始まります。写真のノートには 3 つのグループの文字が示されており、前の文字が 2 つ後ろに移動して後ろの文字になるというパターンを見つけるのは簡単です。
次に、行う必要があるのは、このルールに従って次のプロンプト文字列を復号化し、ディスプレイスメント復号化を実行して実際の文の意味を取得することです。
この質問では、文字列のエンコードと文字列に関する知識を調べます。 for ループ、コード 実装は次のとおりです:
text = '''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.''' text_translate = '' for i in text: if str.isalpha(i): n = ord(i) if i >= 'y': n = ord(i) + 2 - 26 else: n = ord(i) + 2 text_translate += chr(n) else: text_translate += i print(text_translate)
結果を取得:
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.
作者は非常に興味深いです。もちろん、手動で計算することはできません。文字列を使用することをお勧めします。 maketrans() を使用してそれを解決します。上で採用したものはより直接的な方法ですが、公式ではより合理化された方法が提供されています:
import string l = string.lowercase t = string.maketrans(l, l[2:] + l[:2]) print (text.translate(t))
次に、URL 内のマップを ocr に変更し、Enter キーを押して第 2 レベルに到達します。 :
著者はさらに、 ヒントは本の中にあるかも知れません (もちろんそんなことはあり得ません)、あるいはソースコードの中にあるかもしれないと述べました。ウェブページ。次に、右クリックしてソース コードを表示し、下にスクロールして緑色の領域を確認します。案の定、問題が見つかりました:
意味: 次の中で最も少ない文字を見つけてください。文字列
もしあなただったら、どうしますか? すぐに実装できる 10 行のコードを見てみましょう:
import requests url = 'http://www.pythonchallenge.com/pc/def/ocr.html' res = requests.get(url).text text = re.findall('.*?<!--.*-->.*<!--(.*)-->',res,re.S) # list转为str便于遍历字符 str = ''.join(text) lst = [] key=[] #遍历字符 for i in str: #将字符存到list中 lst.append(i) #如果字符是唯一的,则添加进key if i not in key: key.append(i) # 将list列表中的字符出现字数统计出来 for items in key: print(items,lst.count(items))まず、Requests を使用して Web ページをリクエストし、次に正規表現を使用して文字列を抽出し、次に for を使用します。ループして各文字の出現数をカウントします。
% 6104 $ 6046 @ 6157 _ 6112 ^ 6030 # 6115 ) 6186 & 6043 ! 6079 + 6066 ] 6152 * 6034 } 6105 [ 6108 ( 6154 { 6046 e 1 q 1 u 1 a 1 l 1 i 1 t 1 y 1最後の数文字が最も出現頻度が低く、これらを合わせて「等しい」ことがわかります。URL 文字を置き換えることで、2 番目のレベルに合格し、次のレベルに進んでチャレンジを続けることができます。面白くないですか? 後続の各レベルでは、レベル 4 など、関連する Python スキルを使用して解決する必要があります。
所以,这一关肯定不能采取手动输入的方法闯关,自然要用到 Python 了。要实现自动填充修改 url 回车跳转到新 url,循环直到网页再也无法跳转为止这一功能。
如果是你,你会怎么做?
其实,一段简单的爬虫加正则就能搞定。思路很简单,把每次网页中的数值提取出来替换成新的 url 再请求网页,循环下去,代码实现如下:
import requests import re import os # 首页url resp = requests.get( 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345').text url = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=' # 计数器 count = 0 while True: try: # 提取下一页动态数值 nextid = re.search('\d+', resp).group() count = count + 1 nextid = int(nextid) except: print('最后一个url为:%s' % nexturl) break # 获取下一页url nexturl = url + str(nextid) print('url %s:%s' % (count, nexturl)) # 重复请求 resp = requests.get(nexturl).text
输出结果如下:
可以看到,最终循环了 85 次找到了最后一个数字16044,输入到 url 中就闯关成功。
如果遇到不会做的题,可以在这里找到参考答案:
中参考文教程:
https://www.cnblogs.com/jimnox/archive/2009/12/08/tips-to-python-challenge.html
官方参考教程:
http://garethrees.org/2007/05/07/python-challenge/
以上がゲームプレイを通じて Python の習熟度をテストしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
