Python3関連のことを調べてみた

Python3関連のことを調べてみた
目次

【Python】基本!PEP8を意識して書いてみた!

# 本日の内容
今日の記事はPythonを使用する上で基礎的な情報を記載していきます。
実際に勉強会でも使用する内容になります。
下記に記載しているコードはコードスタイル「PEP8」を意識して記載しています。
PEP8については以下のサイトをご覧ください。

https://peps.python.org/pep-0008/

## 変数と四則演算
コードは以下になります。
“`python
# 変数
num = 1
print(type(num)) #

moji = “こんにちは”
print(type(moji)) #

num_1 = 1.1
print(type(num_1)) #

flg = True
print(type(flg)) #
num_lst = [1, 2, 3, 4, 5]
print(type(num_lst)) #

num_tuple = (1, 2, 3, 4)
print(type(num

元記事を表示

sys.argvの個人的まとめ

# 0.sys.argvとは
sys.argv は、Python でコマンドライン引数を処理するために使用されるリストです。プログラムがコマンドラインから実行されたとき、その引数が sys.argv に格納されます。

# 1.sys.stdinとの比較

sys.argv はコマンドライン引数を取得するために使用され、プログラムの起動時に与えられる入力に対応します。
sys.stdin は標準入力からデータを読み取るために使用され、プログラムの実行中に提供される入力に対応します。

# 2.sys.argvのコードの例

“`python:
import sys

# コマンドライン引数のリストを表示
print(“コマンドライン引数:”, sys.argv)

# コマンドライン引数が2つ以上ある場合、それらを表示
if len(sys.argv) > 1:
print(“引数のリスト:”)
for i, arg in enumerate(sys.argv[1:], start=1):
print(f” 引数 {i}: {arg}”)
else:

元記事を表示

Pythonの標準入力sys.stdinの個人的まとめ

# 0.はじめに

Pythonのユーザー入力というとinput()とsys.stdinの2つがありますが、ここではsys.stdinについて記載したいと思います。

# 1.sys.stdinとは
sys.stdinはファイルオブジェクトの一種で、標準入力(通常はキーボード)から直接データを読み取ることができます。主にスクリプトやプログラムで標準入力から一括してデータを読み取るのに使われます。

# 2.input()との比較

## 2.1.対話型入力と一括入力

input(): 対話型で一行ずつ入力を受け取るのに適しています。
sys.stdin: ファイルやパイプからの一括入力や複数行の入力を処理するのに適しています。

## 2.2.プロンプト表示

input(): プロンプトメッセージを表示してユーザーに入力を促します。
sys.stdin: プロンプトは表示されません。直接入力を受け取ります。

## 2.3.用途

input(): 主にスクリプトの対話型入力に使用されます。
sys.stdin: 標準入力からのデータ読み込みが必要なスクリプトや、リダイレクトされ

元記事を表示

【Python3】【殿堂入りキャンペーン】残り物の量 (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_archive/leftover

**問題: スーパーマーケットの生鮮食品の売れ残り計算**

**入力**:
1. 生鮮食品の初期重量 `m` (kg)
2. 生のまま販売した時の売上割合 `p` (%)
3. 売れ残りをお惣菜にした時の売上割合 `q` (%)

**出力**:
– 最終的な売れ残りの重量 (kg)

**アプローチ**:
1. 初期重量 `m` から `p%` を売り上げる
2. 残りの `m` から `q%` をお惣菜として売り上げる
3. 最終的な売れ残りを計算して出力

**コード**:
“`python
def solve(m, p, q):
# 最初に売れた量を計算 (生のまま)
sold_initially = m * p / 100.0
# 最初に売れた後の残りの量
remaining_after_first_sale = m – sold_initially
# 残りをお惣菜にして売れた量を計算
s

元記事を表示

【Python3】みかんの仕分け (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_archive/mikan

**問題: みかんを重さごとに仕分ける**

**入力**:
1. 仕分ける重さの区切りを表す整数 `N`
2. みかんの個数を表す整数 `M`
3. 各みかんの重さ `w_1` から `w_M`

**出力**:
– 各みかんを最も近い重さに仕分け、その重さを出力

**アプローチ**:
1. 標準入力から `N`, `M` と各みかんの重さを読み込む
2. 各みかんの重さについて、仕分け先の重さを計算
3. 仕分け先の重さを出力

**コード**:
“`python
def classify_oranges(weight, num_oranges, oranges):
# 各みかんの重さに対して仕分け先の重さを計算して出力
for orange in oranges:
# もし、みかんの重さがweight以下ならweightの箱に仕分け
if orange <= weight: pri

元記事を表示

Python 2次元配列の複数キーによるソートについて

# はじめに
 2次元配列の複数キー(優先順位付き)によるソートについて、Lambda関数を使用した要領について、備忘録を兼ねてまとめました。

# 特定の列を基準としたソート
 身長(昇順)、体重(降順)、名前(昇順:辞書順)にする場合は次の通り、優先するキーから順に記載します。
“` Python:Python
import pprint

class_data = [
[taro,178,60],
[jiro,180,82],
[saburo,178,65]
]

calss_data.sort(key=lambda x:(x[1],-x[2],x[0]))
pprint.pprint(calss_data)

#[[saburo,178,65],
# [taro,178,60],
# [jiro,180,82]]

“`
:::note info
各キーの前に「-」を付けることで、昇順を降順に切り替えることができます。
:::

参考にしたサイトを見失ったので、見つけられたら貼り付けます。

元記事を表示

【Python3】野球の審判 (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire

**問題: 野球のストライクとボールのコール**

**入力**: 投球数 `N` と各投球の結果 `s_1` から `s_n` (`strike` または `ball`)
**出力**:
– ストライクが 1 〜 2 つたまったとき → `”strike!”`
– ストライクが 3 つたまったとき → `”out!”`
– ボールが 1 〜 3 つたまったとき → `”ball!”`
– ボールが 4 つたまったとき → `”fourball!”`

**アプローチ**:
1. 標準入力から投球数 `N` と各投球の結果を読み込む
2. ストライクとボールのカウントを初期化
3. 各投球結果を基にカウントを更新し、適切なコールを出力

**コード**:
“`python
# 標準入力からデータを読み込む
import sys
input = sys.stdin.read().strip().split()
N = int(input[0]) # 投球数

元記事を表示

【Python3】宝くじ (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_archive/lottery

**問題: 宝くじの当選結果を判定**

**入力**: 当選番号 `b`、購入した宝くじの数 `n`、および購入した各宝くじの番号 `a_1` から `a_n`
**出力**: 各宝くじが何等に当選したかを出力

**アプローチ**:
1. 当選番号 `b`、購入した宝くじの数 `n`、および購入した各宝くじの番号 `a_1` から `a_n` を標準入力から読み込む
2. 各宝くじの番号を当選番号と比較して何等に当選したか判定
3. 結果を出力

**コード**:
“`python
# 標準入力からデータを読み込む
import sys
input = sys.stdin.read().strip().split()
b = int(input[0]) # 当選番号
n = int(input[1]) # 購入した宝くじの数
tickets = [int(input[i+2]) for i in range(n)] # 購入した宝くじの番号リスト

元記事を表示

【Python3】Fizz Buzz (paizaランク C 相当)をやってみた

https://paiza.jp/works/mondai/c_rank_skillcheck_sample/fizz-buzz

**問題: 1からNまでの整数を表示するが、特定の条件で文字列を代わりに表示**

**入力**: 整数 `N`
**出力**:
– 3の倍数かつ5の倍数のときには、”Fizz Buzz”
– 3の倍数のときには、”Fizz”
– 5の倍数のときには、”Buzz”
– それ以外の数値はそのまま表示

**アプローチ**:
1. 標準入力から整数 `N` を読み込む
2. 1からNまでの整数について条件を確認し、適切な文字列を生成
3. 結果を出力

**コード**:
“`python
# 標準入力から整数Nを読み込む
N = int(input().strip())

# 1からNまでの整数を順に処理
for i in range(1, N + 1):
# 3の倍数かつ5の倍数のとき
if i % 3 == 0 and i % 5 == 0:
print(“Fizz Buzz”)
# 3の倍数のとき
eli

元記事を表示

【Python3】【殿堂入りキャンペーン】N倍の文字列 (paizaランク D 相当)をやってみた

https://paiza.jp/works/mondai/d_rank_skillcheck_archive/square

**問題: 指定された個数の「*」を繋げた文字列を出力**

**入力**: 整数 `N`
**出力**: `N` 個の「*」を繋げた文字列

**アプローチ**:
1. 標準入力から整数 `N` を読み込む
2. `N` 個の「*」を繋げた文字列を生成
3. 結果を出力

**コード**:
“`python
# 標準入力から整数Nを読み込む
N = int(input().strip())

# N個の「*」を繋げた文字列を生成
result = ‘*’ * N

# 結果を出力
print(result)
“`

**コードの説明**:
1. **整数の読み込み**:
– `input().strip()` を使って標準入力から入力を読み込みます。
– `int()` を使って入力された文字列を整数 `N` に変換します。

2. **文字列の生成**:
– `’*’ * N` で、N個の「*」を繋げた文字列を生成します。

元記事を表示

【Python3】Eメールアドレス (paizaランク D 相当)をやってみた

https://paiza.jp/works/mondai/d_rank_skillcheck_archive/email_address

**問題: Eメールアドレスの構築**

**入力**: ローカル部 `s` とドメイン `t` が改行区切りで与えられる
**出力**: `s@t` の形式でEメールアドレスを出力

**アプローチ**:
1. 標準入力からローカル部 `s` とドメイン `t` を読み込む
2. `s` と `t` を `@` で結合してEメールアドレスを生成
3. 結果を出力

**コード**:
“`python
# 標準入力からローカル部とドメインを読み込む
s = input().strip()
t = input().strip()

# Eメールアドレスの形式で結合
email_address = s + “@” + t

# 結果を出力
print(email_address)
“`

**コードの説明**:
1. **文字列の読み込み**:
– `input().strip()` を使って標準入力からローカル部 `s` を読み込みま

元記事を表示

【Python3】足し算 (paizaランク D 相当)をやってみた

https://paiza.jp/works/mondai/d_rank_skillcheck_sample/addition

**問題: 2つの正の整数の合計を計算**

**入力**: 半角スペース区切りで2つの整数 `a` と `b`
**出力**: `a` と `b` を足した結果

**アプローチ**:
1. 標準入力から1行の文字列を読み込む
2. 半角スペースで分割して2つの整数 `a` と `b` を取得
3. 整数に変換して合計を計算
4. 結果を出力

**コード**:
“`python
# 標準入力から1行の文字列を読み込む
input_line = input().strip()

# 読み込んだ文字列を半角スペースで分割して2つの整数を取得
a, b = map(int, input_line.split())

# 整数に変換して合計を計算
result = a + b

# 結果を出力
print(result)
“`

**コードの説明**:
1. **文字列の読み込み**:
– `input().strip()` を使って標準入力から1行

元記事を表示

paizaラーニングレベルアップ問題集のFizz Buzz (paizaランク C 相当)をやってみた

paiza×Qiita記事投稿キャンペーンということで、paizaラーニングレベルアップ問題集の[Fizz Buzz (paizaランク C 相当)](https://paiza.jp/works/mondai/c_rank_skillcheck_sample/fizz-buzz)をやってみました。言語はPython3です。

ちなみに、[Dランクレベルアップメニュー](https://paiza.jp/works/mondai/d_rank_level_up_problems/d_rank_level_up_problems__loop_boss)にもあるのですが、こちらは
– 入力値なし($N=100$で固定)
– `Fizz`と`Buzz`の間に半角空白なし

となっております。
– – –
– サンプルプログラム(Python3)

“`py
n = int(input())
for i in range(1, n+1):
if i%3==0 and i%5==0:
print(“Fizz Buzz”)

元記事を表示

【Python3】一番小さい値 (paizaランク D 相当)をやってみた

https://paiza.jp/works/mondai/d_rank_skillcheck_sample/min_num

**問題: 5つの正の整数のうち最も小さい数字を出力**

**入力**: 5行にわたって正の整数が1つずつ与えられる
**出力**: 最小の整数を出力

**アプローチ**:
1. 標準入力から5つの整数を読み込む
2. 最小の整数を見つけて出力

**コード**:
“`python
# 5つの整数を格納するリスト
numbers = []

# 標準入力から5行の整数を読み込む
for _ in range(5):
num = int(input())
numbers.append(num)

# リストの中で最も小さい数を探す
min_number = min(numbers)

# 最小の整数を出力する
print(min_number)
“`

**コードの説明**:
1. **リストの初期化**:
– 5つの整数を格納するための空のリスト `numbers` を用意します。

2. **標準入力から整数を読み込む**:

元記事を表示

【Python3】十億連勝 (paizaランク S 相当)をやってみた

https://paiza.jp/works/mondai/real_event/continuous_winning

**問題: ゲームの隠し要素を満たす連勝数を数える**

**入力**: N個のステージと各ステージでの試合数A_i、最大連勝数X
**出力**: X連勝を達成する方法の通り数の下9桁

**アプローチ**:
1. ステージを順に進み、各試合結果を考慮して連勝数を更新。
2. 特定の連勝数に達する方法を動的計画法(DP)で記録。
3. DP状態は (連勝数, X連勝達成フラグ) の組み合わせ。
4. 最終結果を計算し、9桁に収める。

**コード**:
“`python
def push(dic, key, val):
“””辞書に値を追加または更新するヘルパー関数”””
if key in dic:
dic[key] += val
else:
dic[key] = val

# 入力を読み込む
N, X = map(int, input().split())
A = [int(input()) for _

元記事を表示

【Python3】ハノイの塔 (paizaランク A 相当)をやってみた

https://paiza.jp/works/mondai/real_event/hanoi

**ハノイの塔**のプログラムは、与えられた `n` 個の円盤を杭Aから杭Cに最短手順で移動する際の `t` 回目の状態を出力します。

**コードの手順**:
1. ハノイの塔の状態を再帰的にシミュレート。
2. 特定の手順数 `t` における状態を記録。
3. 各杭の状態を出力。

“`python
def hanoi(n, t):
# 初期状態の設定
pegs = [list(range(n, 0, -1)), [], []]
moves = []

# ハノイの塔の再帰的な移動関数
def move_disks(num_disks, from_peg, to_peg, aux_peg):
if num_disks == 0:
return
move_disks(num_disks – 1, from_peg, aux_peg, to_peg)
if len(moves)

元記事を表示

Pythonの仮想環境を簡単に構築する方法【venv】

この記事では、Pythonの仮想環境を簡単に構築し、管理する方法を解説します。

# 1. Pythonのインストール
まずはPythonがシステムにインストールされているか確認します。ターミナルまたはコマンドプロンプトを開き、以下のコマンドを実行します。

“`terminal
python –version
“`

Pythonがインストールされていない場合は、Python公式サイトから最新バージョンをダウンロードしてインストールしてください。

## 2. 仮想環境の作成
Python 3.3以降では、venvモジュールを使用して仮想環境を簡単に作成できます。以下のコマンドを実行して仮想環境を作成しましょう。

“`terminal
python -m venv myenv
“`

ここで、myenvは仮想環境の名前です。自分のプロジェクトに合わせて適宜変更してください。

## 3. 仮想環境の有効化
次に、仮想環境を有効化します。使用しているオペレーティングシステムに応じて、以下のコマンドを実行します。

・ Windows:
“`
myenv\Scripts\a

元記事を表示

コイルの作る磁場シミュレーション

# はじめに
電流の作り出す磁場はビオザバールの法則で計算できる。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/de3fc544-c6aa-3df3-a276-46e492108137.png)

“`math
H= \frac{\mu_0}{4 \pi} \frac{I dl \times \vec{r}}{| \vec{r}^3 |}
“`

https://eleking.net/study/s-electromagnetism/se-biot-savart.html

円形コイルの中心磁場は以下のように計算できる

“`math
H = \frac{I}{2r}
“`

円中心以外はどうなっているんだろう?
これがテーマです。

# 円形コイル中心の磁場計算:シミュレーション法の検証
表題の内容を計算してみる。

“`Python
import math

x = 0
y = 0

def culc_H(s_x,s_y,e_x,e_y): #電流の向きで

元記事を表示

【Python】turtleで図形描いてみた

# 本日のブログ内容
今日はPythonでいろんな図形を描いてみたのでコードと描いてみた図形を記録として残そうと思います。

## 三角形
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/467cdf26-ea7a-6a41-4be3-963766d1e8b5.png)

### 実際のコード
“`python
turtle.color(‘red’, ‘yellow’)
turtle.begin_fill() # 線の色
for i in range(3):
turtle.forward(100)
turtle.left(360 / 3) # 左に3回曲がる
turtle.done()
“`
## 四角形
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/966c6fa9-67df-9f28-fe61-dc6223cfa2c4.png)

##

元記事を表示

【Python3】【殿堂入りキャンペーン】名刺バインダー管理 (paizaランク B 相当)をやってみた

https://paiza.jp/works/mondai/b_rank_skillcheck_archive/name_card

### 🎨 Pythonプログラム:名刺の裏側の番号を表示 🌐

以下のPythonプログラムは、指定された名刺の番号 `m` を基に、その名刺の裏側の番号を計算して表示します。

“`python
# 入力値を読み込み、nとmに分割
n, m = list(map(int, input().split()))

# 名刺のページ番号を計算
# (m-1) // (n * 2) は0始まりのページ番号、+1で1始まりのページ番号に変換
page = (m-1) // (n * 2) + 1

# ページの最後の名刺番号を計算
pmax = page * n * 2

# ページの最初の名刺番号を計算
pmin = pmax – (n * 2 – 1)

# 名刺の裏側の番号を計算
# pmax + pmin – m でm番の名刺の裏側の番号を求める
print(pmax + pmin – m)
“`

### コードの説明 📄

1. **入力の読み

元記事を表示

OTHERカテゴリの最新記事