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

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

pip listにあるbeautifulsoup4とbs4の違い

Webスクレイピングをするさいにモジュールをインストール。
“`py
import requests
from bs4 import BeautifulSoup
“`

モジュールは一体どこからきたのかをコマンドプロンプトで探す。
“`
>pip list
beautifulsoup4 4.12.2
bs4 0.0.1
“`

beautifulsoupとbs4の違いはなに?

# 調べる
参考 

https://jobcode.jp/python-beautifulsoup4/

引用
どちらでもBeautifulSoup4が利用できますが、”pip install BeautifulSoup”の場合、古いバージョン(3)がインストールされ可能性があります。

BeautifulSoup4は、bs4ライブラリのモジュール(一部)であるためbs4でインストールすれば間違いはないです。

結論
bs4のなかにBeautifulSoup4が存在する。

元記事を表示

プログラム練習問題:経理

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

ひとまず前回のと同様にしてみたのですが
どうしてもエラーが発生する。

“`py

N,K = map(int,input().split())
sections = {input() for _ in range(N)}
print(sections)
for _ in range(K):
section, number, cost = input().split()
print(section)
section, total_cost = sections[section]
sections[section] = (int(number), total_cost + int(cost))

print(sections)

“`

“`
Traceback (most recent call last):
File “Main.py”, line 5, in
secti

元記事を表示

ABC_347

全然ACならなくて10日間ほどブチ切れてました。
346は土曜日までに記事書くことにします。

### C問題

Dを(A+B)で割った余りがAの範囲にあればいいってことかな?

“`python

N , A , B = map(int,input().split())
D = list(map(int,input().split()))
count = True
for i in range(N):
if D[i] % (A+B) <= A: count = True else: count = False break print("Yes" if count else "No") ``` 結果WA 開始日を考慮してなかったです。そんな簡単なわけないじゃん youtubeの解説見たけど2周回して2分探索って?? これはお蔵入りで、、、(@^^)/~~~ ### D問題 ビット演算と全探索らしい。 ビット演算まだ履修してないんで土曜日までに電車の中でにらめっこします。 ```python def solve(

元記事を表示

それ,numpy で書かない?–9–

それ,numpy で書かない?–9–

ただでさえ遅い選択ソート。
**リストでやると Numpy ndarray でやるより 100 倍以上遅い**。argmin を使って余計な for ループも使わずに済む。

“`python
import random

# random.randint(1, 9)で1〜9の数値を生成、for文で80000回実行
numbers = [random.randint(1, 9) for _ in range(80000)]
“`

“`python
from time import time
def select_sort(data: list[int]) -> list[int]:
len_data = len(data) # 配列の長さ
for i in range(len_data): # リストの各位置に対して最小値を見つけ、その位置と交換するため
min_index = i # 初期値
for j in range(i + 1, len_data): # iより後ろの要素の中

元記事を表示

シンプルで分かりやすい選択ソートの解説 【Python3.12】

# 選択ソートとは
選択ソートは、シンプルで直感的に書けるソートアルゴリズムです。
実装が簡単なので、小さなデータをソートするのに適しています。
平均時間計算量、最悪時間計算量がともにО(n²)なので効率的ではありません。

## 配列(ハッシュテーブル)を作成
![スクリーンショット 2024-04-02 19.17.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3761690/502c306a-9cb9-d375-4321-490f88ec2cd6.png)
8個のデータを持つ配列があります。
Pythonだと以下のように宣言と初期化を行うことができます。
“`python
numbers = [7, 4, 3, 8, 1, 5, 2, 6]
“`
`random`モジュールを使うことでランダムな配列を作成することもできます。
“`python
import random

# random.randint(1, 9)で1〜9の数値を生成、for文で8回実行
numbers = [ra

元記事を表示

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

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情報。
これを指定することで、ブラウザの開発ツールで確認されるよ

元記事を表示

OTHERカテゴリの最新記事