問題2を考えてみる
問題2は、今後登場することのあるスタイルで、プログラムを作成するものになります。
今回の問題は、以前試したuv
コマンドを用いたものです。
# 問題2
Pythonのuvツールを用いて、スクリプトを作成せよ。
## 仕様
以下を満たすコードを作成すること。
1. uvにてpythonバージョン3.12(の最新版)を利用すること
2. main.pyを作成すること(uv初期化の段階で自動作成されているはず)
3. main.pyを実行すると、**17の31乗(17^31)と31の17乗(31^17)の和**の値を出力すること
作ってみる
注釈
uv
コマンドが入っていない場合、ここから後の作業が進みません。
# VS codeのターミナル上で実行
$ which uv
を実行し、uv
コマンドのパス(/home/linux/.local/bin/uv
など)が表示されない場合は入っていませんので、
以下のコマンドを実行し、一度ターミナルを閉じて再度開いてもう一度確認してください。
$ setup-uv
$ exit # ここで一度ターミナルが閉じるので、再度開く
$ which uv
プロジェクトはex2
ディレクトリ上で作成する必要があるので、ターミナル(リポジトリのトップで起動している)上で一度cd
してから進めましょう。
$ cd ex2
$ uv init --python=3.12
ここでuv
に付けた--python=3.12
は、Pythonの最低バージョンを指定するものと考えてください(3.12以上でのコードとなる)。
仮に付け忘れたとしても、pyproject.tomo
にて確認して編集可能です。
[project]
name = "ex2"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13" # ここを変更すればよい(3.13 → 3.12)
dependencies = []
そして、main.py
が存在しているはずなので、必要なコードにしてみます。
1def main():
2 print(17**31 + 31**17)
3
4
5if __name__ == "__main__":
6 main()
テスト
コードは動いてなんぼです。 実際に実行してみましょう。
Pythonのバージョン確認
今回はuvで実行環境の仮想化をしてバージョンを規定しています。
正しい指定バージョンであるかを確認しておきましょう。
仮想環境でのコマンド実行は uv run
で行えます。
$ cd ex2 # ex2ディレクトリにいなければ移動しておく
$ uv run python -V
Using CPython 3.13.3
Creating virtual environment at: .venv
Python 3.13.3
あらら、このケースでは3.13.3が動いてしまいました。Pythonのバージョンが指定のものではないということですので、切り替えます。
uv
においてこの操作は「Pythonバージョンのピン留め」となります。
# ex2にいることを前提とします
$ uv python pin 3.13
warning: No interpreter found for Python 3.12 in managed installations or search path
Updated `.python-version` from `3.13` -> `3.12`
$ uv run python -V
Using CPython 3.12.10
Removed virtual environment at: .venv
Creating virtual environment at: .venv
Python 3.12.10
この操作により、既に作られていた3.13ベースの仮想環境(.venv
)が削除され、3.12ベースで再作成と実行という流れとなりました。
コードの実行
uv run
は実行するスクリプトを直接渡せます。
$ uv run main.py
1392XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX3344 # 結果は自分で確認しよう
動くことが確認できました。 あとはコミットしてみましょう。
コミットとプッシュ
この時点で「ソース管理」では複数のファイルがリストアップされているはずです。
main.py
: スクリプト本体pyproject.toml
: プロジェクトの設定ファイル(自動生成、人によっては一部書き換え)uv.lock
: uvによる仮想環境の設定ファイル(自動生成).python-version
: uvによるPythonバージョンの設定ファイル(自動生成)
注釈
これ以外に .venv
というディレクトリが存在しますが、git管理対象外です。
ということで、この4つのファイルを「追加」してコミットしましょう。「問題2」とでもしておきましょうか。
コミットが完了したら、問題1同様にプッシュ操作まではしておきましょう。