ホームページ バックエンド開発 Python チュートリアル ゲームプレイを通じて Python の習熟度をテストします

ゲームプレイを通じて Python の習熟度をテストします

Jun 03, 2019 pm 06:00 PM
python

最近、インターネット上で非常に興味深い Python ゲーム クリアランス Web サイトを見ました。レベルは全部で 33 あります。各レベルでは、Python の知識を使用して問題を解決し、答えを見つける必要があります。次のレベル。 Python の包括的な習熟度をテストします。たとえば、一部のレベルでは正規表現の使用が必要で、一部のレベルではクローラーの使用が必要です。

ゲームプレイを通じて Python の習熟度をテストします

私たちは通常、章順、パッケージ、またはモジュールで Python を学習しますが、学習後は忘れがちです。この Web サイトを使用して、Python の習熟度を包括的にテストし、ギャップを見つけて埋めることができます。

このウェブサイトのプレイ方法について話しましょう。

ゲームプレイを通じて Python の習熟度をテストします

こちらがこのサイトのメインページですが、10年以上前から存在している歴史を感じますね。ただし、アンティークっぽいからといって侮ってはいけません。

ゲームプレイを通じて Python の習熟度をテストします

楽しんでみましょう。「チャレンジする」をクリックしてチャレンジを開始してください。

レベル 0 は、ウォーミングアップ ウォームアップ セッションです:

このレベルの要件は、URL リンクを変更することであり、与えられるプロンプトはコンピューター上の数式です。 2 の 38 乗なので、おそらく値を計算し、URL を変更して次のレベルに入る必要があります。

このレベルは Python の基本的な数値演算のテストです。計算方法は知っていますか?

Python 独自のターミナルを開くと、1 行のコードで結果を計算できます:

ゲームプレイを通じて Python の習熟度をテストします

元のリンクの 0 を 274877906944 に置き換えて、Enter キーを押します。次のページに進むには レベル 1:

ゲームプレイを通じて Python の習熟度をテストします

#ゲームが正式に始まります。写真のノートには 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 レベルに到達します。 :

ゲームプレイを通じて Python の習熟度をテストします

著者はさらに、ゲームプレイを通じて Python の習熟度をテストします ヒントは本の中にあるかも知れません (もちろんそんなことはあり得ません)、あるいはソースコードの中にあるかもしれないと述べました。ウェブページ。次に、右クリックしてソース コードを表示し、下にスクロールして緑色の領域を確認します。案の定、問題が見つかりました:

ゲームプレイを通じて Python の習熟度をテストします

意味: 次の中で最も少ない文字を見つけてください。文字列

#いくつかのナレッジ ポイントを調査しました:

文字列を抽出するための正規表現

リストのカウント

条件文

もしあなただったら、どうしますか?

すぐに実装できる 10 行のコードを見てみましょう:

import requests
url = 'http://www.pythonchallenge.com/pc/def/ocr.html'
res = requests.get(url).text
text = re.findall(&#39;.*?<!--.*-->.*<!--(.*)-->&#39;,res,re.S)
# list转为str便于遍历字符
str = &#39;&#39;.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 に値を手動で入力して Enter キーを押す必要があります。これで終わりだと思いますか?新しい値が常に出現し、無限に入力できるように見えるわけではありません。

ゲームプレイを通じて Python の習熟度をテストします

所以,这一关肯定不能采取手动输入的方法闯关,自然要用到 Python 了。要实现自动填充修改 url 回车跳转到新 url,循环直到网页再也无法跳转为止这一功能。

如果是你,你会怎么做?

其实,一段简单的爬虫加正则就能搞定。思路很简单,把每次网页中的数值提取出来替换成新的 url 再请求网页,循环下去,代码实现如下:

import requests
import re
import os
# 首页url
resp = requests.get(
   &#39;http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345&#39;).text
    url = &#39;http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=&#39;
# 计数器
count = 0
while True:
   try:
    # 提取下一页动态数值
       nextid = re.search(&#39;\d+&#39;, resp).group()
       count = count + 1
       nextid = int(nextid)
    except:
       print(&#39;最后一个url为:%s&#39; % nexturl)
       break
    # 获取下一页url
    nexturl = url + str(nextid)
    print(&#39;url %s:%s&#39; % (count, nexturl))
    # 重复请求
    resp = requests.get(nexturl).text
ログイン後にコピー

输出结果如下:

ゲームプレイを通じて Python の習熟度をテストします

可以看到,最终循环了 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

CentosのPytorchのGPUサポートはどのようにサポートされていますか CentosのPytorchのGPUサポートはどのようにサポートされていますか Apr 14, 2025 pm 06:48 PM

Pytorch GPUアクセラレーションを有効にすることで、CentOSシステムでは、PytorchのCUDA、CUDNN、およびGPUバージョンのインストールが必要です。次の手順では、プロセスをガイドします。CUDAおよびCUDNNのインストールでは、CUDAバージョンの互換性が決定されます。NVIDIA-SMIコマンドを使用して、NVIDIAグラフィックスカードでサポートされているCUDAバージョンを表示します。たとえば、MX450グラフィックカードはCUDA11.1以上をサポートする場合があります。 cudatoolkitのダウンロードとインストール:nvidiacudatoolkitの公式Webサイトにアクセスし、グラフィックカードでサポートされている最高のCUDAバージョンに従って、対応するバージョンをダウンロードしてインストールします。 cudnnライブラリをインストールする:

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

CentosでPytorchモデルを訓練する方法 CentosでPytorchモデルを訓練する方法 Apr 14, 2025 pm 03:03 PM

CentOSシステムでのPytorchモデルの効率的なトレーニングには手順が必要であり、この記事では詳細なガイドが提供されます。 1。環境の準備:Pythonおよび依存関係のインストール:Centosシステムは通常Pythonをプリインストールしますが、バージョンは古い場合があります。 YumまたはDNFを使用してPython 3をインストールし、PIP:sudoyumupdatepython3(またはsudodnfupdatepython3)、pip3install-upgradepipをアップグレードすることをお勧めします。 cuda and cudnn(GPU加速):nvidiagpuを使用する場合は、cudatoolをインストールする必要があります

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Centosの下でPytorchバージョンを選択する方法 Centosの下でPytorchバージョンを選択する方法 Apr 14, 2025 pm 02:51 PM

CentOSでPytorchバージョンを選択する場合、次の重要な要素を考慮する必要があります。1。CUDAバージョンの互換性GPUサポート:NVIDIA GPUを使用してGPU加速度を活用したい場合は、対応するCUDAバージョンをサポートするPytorchを選択する必要があります。 NVIDIA-SMIコマンドを実行することでサポートされているCUDAバージョンを表示できます。 CPUバージョン:GPUをお持ちでない場合、またはGPUを使用したくない場合は、PytorchのCPUバージョンを選択できます。 2。PythonバージョンPytorch

CentosでPytorchを使用してデータ前処理を行う方法 CentosでPytorchを使用してデータ前処理を行う方法 Apr 14, 2025 pm 02:15 PM

CentOSシステムのPytorchデータを効率的に処理するには、次の手順が必要です。依存関係のインストール:システムを最初に更新し、Python3とPIPをインストールします。仮想環境構成(推奨):Condaを使用して、新しい仮想環境を作成およびアクティブにします。例:Condacreate-N

NginxをCentosにインストールする方法 NginxをCentosにインストールする方法 Apr 14, 2025 pm 08:06 PM

NGINXのインストールをインストールするには、次の手順に従う必要があります。開発ツール、PCRE-Devel、OpenSSL-Develなどの依存関係のインストール。 nginxソースコードパッケージをダウンロードし、それを解凍してコンパイルしてインストールし、/usr/local/nginxとしてインストールパスを指定します。 nginxユーザーとユーザーグループを作成し、アクセス許可を設定します。構成ファイルnginx.confを変更し、リスニングポートとドメイン名/IPアドレスを構成します。 nginxサービスを開始します。依存関係の問題、ポート競合、構成ファイルエラーなど、一般的なエラーに注意する必要があります。パフォーマンスの最適化は、キャッシュをオンにしたり、ワーカープロセスの数を調整するなど、特定の状況に応じて調整する必要があります。

See all articles