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

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

プログラミング練習問題「銀行」

https://paiza.jp/works/mondai/query_primer/query_primer__bank

ひとまず前回と同じようにタプルで配列を組んでみたのですが
どうやって配列から参照するかで詰まってしまいました。
時間も長くかかってしまったので回答を見ました。

“`py
N,K = map(int,input())
companies = [None] * N
for i in range(N):
name,password,bill = input().split()
companies[i] = (name,int(password),int(bill))

for _ in range(K):
name,password,bill = input().split()
if companies[name]
#ここで詰まる
“`

回答を見ると、タプルと辞書を組み合わせた感じで、
私はまだやったことがない方法でした。。。
勉強させてもらうということで、ちょっと自分なりにやってみました。

“`py
N

元記事を表示

Pythonでコマンドライン上の入力を受け取る方法(ド初心者用)

### 手順

##### モジュールインポート

https://docs.python.org/ja/3/library/sys.html

sysについてはこちらをご覧ください。

今回はsys.argvを使います。

sysを使うためにコードの最初に
import sysを記述しましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1243082/4dedd91c-f288-c894-f9b3-190d5adaf544.png)

### コマンド上でのファイル実行

コマンドライン上で引数を受け取る準備をしましょう。

以下をご覧ください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1243082/9ae057c4-764f-ba85-3521-136368107c17.png)

python3 sample.py input1 input2 input3

とあります

元記事を表示

【Python】indexメソッドを駆使してキーワードの置換を行う方法

# 概要

以下のようなテキストが連携されるプログラムがあるとします。

> text = “私は今新宿駅。1時間圏内に渋谷駅がある。また、同じ1時間圏内に横浜駅がある。”

ただし、たまに、一文切り落とされ(渋谷駅のパートが削られ)、以下のようにも連携されるとします。

> text2 = “私は今新宿駅。また、同じ1時間圏内に横浜駅がある。”

そんな場合に、「また、同じ」のみを削除するにはどうすればいいか?
ちょっと頭使ったので…以下に紹介します。

Pythonの`index`メソッドは、指定した要素がリストや文字列などのイテラブル(反復可能な)オブジェクト内で初めて出現する位置(インデックス)を返します。

以下公式ドキュメントです。

https://docs.python.org/ja/3/tutorial/datastructures.html

## サンプルコード

以下の関数により実現できました。

“`py
def replace_phrase_in_text(text, key_word, new_word):
if key_word in

元記事を表示

ABC165 E-Rotation Matching

自分の構築方法が公式解説やユーザ解説に載っていなかったので。

# 問題
https://atcoder.jp/contests/abc165/tasks/abc165_e

* $M$個の対戦場があり、それぞれに$2$つずつ相異なる数字を重複のないように割り振る
* $N$人にはあらかじめ$1$~$N$の番号が割り振られており、各ラウンドにおいて自分の番号と対戦場に割り振られた番号が一致すればそこへ行き、相手と対戦をする
* 各ラウンドの終了後に、それぞれに割り当てられた番号を$+1$する。但し$N+1$は$1$とする。(1-indexedで考える$\mathrm{mod} N$ のようなもの)
* この工程を$N$ラウンド繰り返したとき、どの$2$人も$2$回以上同じ組み合わせで対戦しないような$M$個の対戦場への数値の割り振り方を構築せよ

# 制約
* $1 \leq M$
* $2M+1 \leq N \leq 200000$

# 解説
前提として、$N$を固定したときにできるだけ$M$を大きくした方が全体の対戦数が増え同じ組み合わせでマッチするリスクが高まりそう。そこで、

元記事を表示

[Python] 導入・便利ツール紹介 [初学者向け] 2024年

![Python%E5%B0%8E%E5%85%A5%E8%A8%98%E4%BA%8B%E3%82%B5%E3%83%A0%E3%83%8D.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682370/836ec3ad-2f95-68ec-2faa-6c131e673344.png)

## 概要

– Python 入門者であっても、わかりやすい内容でまとめる
– Python とは何か
– Python 導入 (ダウンロード) 方法
– Python 使用 / 便利ツールまとめ

## [ Python ] とは

– 1991年に初めて公開されたプログラム言語
– Google、Yahoo!、Instagram、Pinterest などのサービスも、2000年ごろから Python を採用している

### 導入方法

– Python ダウンロードページにアクセスする
– URL : [https://www.python.org/downloads/](https://www.p

元記事を表示

pyenvで導入したPythonでVRA-VANのバイト列を読み込むと日本語が文字化けする

# 概要
競馬予測AIを作るアプリケーションをPythonで作ろうとしていたらJupyterではうまくいっていたのに素のPythonに移したら文字化けが発生した
pyenvのshimsというものを通したPythonにアクセスしていたのが問題だった。
直接Pythonの本体にアクセスしたら解決した。

# 事象
もともと競馬予測AIを作る案件に参画していたところ、Jupyterでうまくいっていたのに、実際にバッチ化するにあたり素のPythonに変えたら日本語が無限に文字化けする事象に遭遇した。

構築はpywin32を使うためにpyenvでpython3.11.7-32bitを導入
そのまま`pyenv global 3.11.7`を設定した。

大まかにいうと下記のコードでJupyterではうまく動いていたので、素のPythonで写したところ、文字化けが発生するようになった。

想定される正常系は下記のように日本語が正常にパースするものだが、ここが@@@@のようになっていた。
似たような事象: https://note.com/mare_ism/n/n8840715b32a4
“`j

元記事を表示

【Python】class構文解説!!

# はじめに
「class」は、Pythonを勉強する上で必ず押さえて欲しい内容になります。
classは試験や開発で必要になる知識です。概念が難しいのでしっかりと理解してください。

## classとは
結論から言うと、オブジェクト(もの)の内容を定義しておくものです。別の言い方で「ひな形」です。
今回使用するのは、Userというオブジェクトの定義です。
中身は、「挨拶」と「年齢を表示」という単純なものです。

## メソッドとは
classの中で処理をまとめているもの。関数になります。

## インスタンス化とは
classに対してデータを格納すること。つまり、classを使用する為の準備。

## 実際のコード
以下のコードはclassの内容です。
例1. `class_1.py`(userの情報を取得する。)
“`python
class User:
user_type = None

def __init__(self, name, age, address):
“””初期化をするメソッド”””
self.name

元記事を表示

poetry + pyside6 の環境構築で困ったこと

# 背景

最近になってpythonの勉強を始めました。

poetryへpyside6を追加しようとした時にうまくいかなかったので、解決方法のメモを残しておきます。

## 結論

pysideのバージョンは、pythonのバージョンによって[バージョンが変わる](https://wiki.qt.io/Qt_for_Python#Python_compatibility_matrix)ので、
pythonバージョンの上限を設定すると良いそうです。

ちゃんとエラーの内容は読みましょう。。。

“`diff_toml: pyproject.toml
[tool.poetry.dependencies]
– python = “^3.12”
+ python = “>=3.12,<3.13" ``` ## 詳細 ### 1. poetry概要 [poetry](https://python-poetry.org)は、パッケージ管理の1つです。 `pyproject.toml` という設定ファイル内に、パッケージ名や外部パッケージのバージョン等を記載します。 使用を始める際は、

元記事を表示

【Python-unittest】テストコード書いてみた!!

# テストコードを書こう
今回の記事はPythonでテストコードを書いてみたのでそれを共有します。
Python言語標準のユニットテストフレームワークである`unittest`を使用します。

## テスト対象コード
今回のテスト対象コードは以下です。
“`python
def add(a, b):
if a == 1 and b == 3:
return 3
elif a == 3 and b == 3:
return 7
return a + b
“`

## テストコード(正常)

“`python
import unittest
from exsample import add

class AddTest(unittest.TestCase):
def test_get_sum_integers(self):
“””add関数のテストコード”””
actual = add(1, 2)

expected = 3
self.ass

元記事を表示

ABC347 with Python(A~E)

ABC347のA~E問題をpythonで解説していきます。個人的にはC問題が難しかったです。

# A – Divisible
## 問題

正整数 $N,K$ 及び長さ $N$ の数列 $A=(A_1,A_2,\ldots,A_N)$ が与えられます。

$A$ に含まれる要素のうち、$K$ の倍数であるもののみを全て取り出し、それらを $K$ で割って出力してください。

https://atcoder.jp/contests/abc347/tasks/abc347_a
## 考察
問題文の通り実装するだけ。

## コード
“`python:A.py
N, K = map(int, input().split())
A = list(map(int, input().split()))
ans = []
for a in A:
if a % K == 0:
ans.append(a // K)
print(*ans)
“`
# B – Substring
## 問題

英小文字からなる文字列 $S$ が与えられます。$S$

元記事を表示

DockerでJupyterHub環境を構築する。

# はじめに
開発メンバーが増えたので、jupyterhubを立ち上げてユーザーごとにjupyterlabできるようにしようかな、と。これは、作業の備忘録です。

# 参考
いつものとおり、Qiita先輩方の情報で本件対応させていただきます。参考サイトは次のとおりです。場合によってはこの記事を読むよりも、以下を直接読んだ方がいいかもしれません。しかし、情報が古く最新の環境にマッチするかどうか保証できません。

参考(1)

https://qiita.com/dyamaguc/items/db1da3084e36029f20cc

参考(2)

https://www.hinomaruc.com/install-jupyterhub-on-ubuntu22-10-using-docker/

参考(3)

https://qiita.com/noguhiro2002/items/99758ad66587f24c0ef2

## この記事では、2024年3月の jupyterhub/jupyterhub Doecker Hub の latestイメージをベースにして環境構築します。

元記事を表示

ChatGPTを使った献立アプリを作ってみた

# はじめに
前回まではChatGPTを使ったクイズアプリを作成しました。
今回はその応用として、キーワードを入力したらそれに基づく献立を提案してくれる献立アプリを作っていきたいと思います!

クイズアプリについては以下の記事でまとめています。
https://qiita.com/shake12/items/7a33cdc1bc105be16c3b

# 事前情報
– OpenAI / ChatGPT 初心者
– 献立アプリは React + Flask で作成

# 開発環境
– macOS Sonoma 14.4
– Visual Studio Code 1.87.2
– Python 3.10.6
– Flask 2.3.2

# プロンプト準備
– [前の記事](https://qiita.com/shake12/items/ac770569db6fcc7169ad)で紹介した以下の形式で準備していく
`model`:今回は **gpt-3.5-turbo** を使用
`messages`:ChatGPTに投げる質問を記載する
– `role`:どこ

元記事を表示

Djangoの概要を掴む

:::note
このブログの作者はフロントエンドにweightをかけ過ぎている者です(他の記事見ると察して頂けるかと)😇
温かい目で見守って頂けると助かります
:::

# 1. 背景
業務でDjangoを使っているもののさっぱりな為なんとかしたいと思った為です。
ということで軽く概要から入ります。

# 2. Djangoとは

https://www.djangoproject.com/start/overview/

Pythonのフレームワークです
## 歴史
当初、2003 年から 2005 年の間に、新聞のウェブサイトの作成とメンテナンスを担当するウェブチームによって開発されたそうです。
いくつかのサイトを作成した後、チームは多くの共通コードとデザインパターンを除外、再利用するようになりました。
この共通コードは、”Django” プロジェクトとして 2005 年 7 月にオープンソース化され、汎用のウェブ開発フレームワークに発展しました。

## Djangoの由来
ジプシー・スウィングのギタリストでのジャンゴ・ラインハルト (Django Reinhardt) からと

元記事を表示

M1 Macbook Airにてdockerで開発環境構築した際のメモ

### インストール方法
https://zenn.dev/imasaka0909/articles/e984e9e69c43cf

### ビルド
`docker pull` した際に、ログインを求められることを知らず。
“`bash
$ docker pull python3
Using default tag: latest
Error response from daemon: pull access denied for python3, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied
“`

`docker login` を実行
“`bash
$ docker login
Authenticating with existing credentials…
Login Succeeded
“`

`docker compose up -d –build` を実行

元記事を表示

開発ツールで確認されるようなソースコードが、Pythonのrequests.get()で取得できないときの対処法

# はじめに
ブラウザの開発ツールから確認するかぎりでは、ソースコードが確認できるwebページ。
しかし、いざ`python`の`requests.get()`でページのソースコードを取得しようとしてもソースコードを得られない場合があります。
本記事では、このような場合の対処法のひとつを示します。

# 解決策
**`requests.get()`の引数`headers`にUser-Agentを指定する**
“`python
import requests
url = “” # webページのurl
response = requests.get(url, headers={“User-Agent”: “”})
“`
User-Agentの指定の仕方の一例は[こちら](https://yuki.world/python-requests-useragent/)。
自分の場合は、User-Agentに空文字列`””`を指定しても解決しました。

# User-Agentとは
webサイトを閲覧するためのブラウザ情報やOS情報。
これを指定することで、ブラウザの開発ツールで確認されるよ

元記事を表示

若手社員のAI部署での利用技術紹介

## はじめに
はじめまして、私は2022年に新卒としてBIPROGY株式会社に入社した高場です。
今回は若手社員の仕事紹介として記事をまとめます。

## 組織の紹介
私が所属している組織は AI 技術部と言い、主に AI を用いたサービスの検討等を行っています。
また、企業や研究機関と協力して共同研究を行うこともあります。
その中で私は主に自然言語処理や時系列データを扱う案件を主に担当しています。

## 案件紹介
### 全体概要
自然言語処理を取り扱っている案件としては、学校教育への支援システム(PoC)などがあり、時系列データの取り扱っている案件としては、 **国立研究開発法人科学技術振興機構(JST)** と協力して行っている **個人及びグループの属性に適応する群集制御**[^1]があります。

今回の記事では、時系列データを取り扱っている群集制御(群集マネジメント)に関する取り組みについて簡単紹介にします。

### 群集マネジメントとは
群集マネジメントとはざっくり言うと **集まった人々の安全・安心と快適な徒歩移動を支え、人々の満足度を高める予防安全活動​*

元記事を表示

歴史を作る時間 (paizaランク C 相当)

https://paiza.jp/works/mondai/query_primer/query_primer__history

タプルのやり方を完全に忘れてたので、調べつつ対応しました
まあ、中身としてはうーんnamesは必要ない気がします。。。
一応出したけど。
historiesは内包表記ができなさそうなので、普通に。タプル化して配列に入れてます。
タプル化したやつをどうやっていれるかってことでちょっと迷ったけども。

その後は、sortedしたやつをそのままプリントするだけですね。
クエリじゃない問題だと思ったのですが案の定でした。

“`py
N,K = map(int,input().split())
names = {input() for _ in range(N)}
histories = []
for i in range(K):
event,charge = input().split()
histories[i] = (int(event),charge)

for year, name in sorted(histories):
p

元記事を表示

話した言葉を文字起こしするアプリの作成

今回は、pythonで、話した言葉を文字起こしするアプリを作成しました。
これは、タイピングが苦手な人や、紙のメモをパソコンにそのまま入力したいときなどに役立ちます。

https://github.com/mt1-m/voice_memo

# 使用方法
zipファイルをダウンロードして解凍したら、voice_memoディレクトリで下記を実行して必要なライブラリをインポート、
“`
pip install -r requirements.txt
“`
できたら下記を実行します。
“`
python voice_memo.py
“`
## 実行結果
![実行結果1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3426433/f37203a1-ad41-3585-1a99-50f12abf4a89.png)
このように、話した言葉を文字起こししてくれます。頑張って発音すれば英語もいけます。終了するときは、’q’キーを押します。

# 実装方法
今回は、マイク入力と文字起こし共に、speech

元記事を表示

【Python】sorted関数を利用して同じ組み合わせのクエリ実行(DBアクセス)を減らす方法

# 概要
`sorted`関数を利用することで、 DBアクセスする回数を減らすことができましたので紹介します。

## サンプルコード1
`sorted`関数とは、イテラブル(リスト、タプル、辞書など)をソートした新しいリストを返す関数。
以下、シンプルなサンプルコードです。

“`py
def sort_and_tuple(input_list):
sorted_tuple = tuple(sorted(input_list))
return sorted_tuple

my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
result = sort_and_tuple(my_list)
print(result) # (1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9)
“`

`sort_and_tuple`関数は、入力としてリストを受け取り、そのリストをソートした後、タプルに変換して返します。このように、`sorted`関数と`tuple`関数を組み合わせることで、リストの要素をソートし、その結果を変更不可

元記事を表示

STEP: 1 アイドルグループ

今週前半はAWSの試験があり、直前だったので一旦お休みしてました。

https://paiza.jp/works/mondai/query_primer/query_primer__idle_group

“`py
N,K = map(int,input().split())
A = {input() for i in range(N)}
for _ in range(K):
command = input().split()
if command[0] == ‘handshake’:
for name in sorted(A):
print(name)
elif command[0] == ‘leave’:
A.remove(command[1])
else:
A.add(command[1])

“`
久しぶりだったのでちょっとど忘れしたりして長引いてしまいました。

キー無しの辞書は{}でできて、
削除や追加はremove,addでできる。
順序はもちろんsortedで。

元記事を表示

OTHERカテゴリの最新記事