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

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

ImportError: cannot import name ‘ops’ from ‘keras’の原因を予想しながら解決した話

# はじめに
Tensorflowを用いて機械学習環境を構築していた際、下記エラーに遭遇しました。
“`
ImportError: cannot import name ‘ops’ from ‘keras’ (/usr/local/lib/python3.10/dist-packages/keras/__init__.py)
“`

Stackoverflowではkerasのバージョンを上げれば解決するとありましたが、kerasとtensorflowのバージョンを上げたくなく対応策を模索しました。
https://stackoverflow.com/questions/78010704/cannot-import-name-ops-from-keras

エラーから原因を予想しつつ、色々と対応考えることで何とか解決できたので、参考になればと思い、記事にしました。

# 環境
エラーが出た環境は以下の通り
* Windows 11 Pro
* Docker Engine v20.10.21
* Python 3.10.12
* tensorflow 2.14.1
* keras 2.

元記事を表示

十億連勝 (paizaランク S 相当)を考察する

# 十億連勝 (paizaランク S 相当)を考察する

**paiza×Qiitaコラボキャンペーン** ということで
[**十億連勝 (paizaランク S 相当)**](https://paiza.jp/works/mondai/real_event/continuous_winning)
を題材に、アルゴリズムの改善について考察してみたいと思います。

## まずは問題文通りに実装する

この問題のように組み合わせに対する処理を行う場合は、大きく2通りあるかと思います。

1. 再帰処理を行う
再帰処理を行う場合一般的には深さ優先探索となります。

2. ループで行う
一般的には幅優先探索となります。

説明だけだとわかりづらいので、まずは問題文通りのアルゴリズムをそれぞれの方法でC言語で実装してみます。

既に動くものからチューニングを行っていくと、正解がわかっている状態でチューニングができるのでデグレードを起こしにくくなります。デバッグも入れて処理の流れも見られるようにしておきます。

(ただし入力が大きいデータの場合、このバージョンでは動作しないの

元記事を表示

【Python】クラスのイニシャライザとメソッドの定義順について

# 概要
– Pythonのクラスにおいて、イニシャライザ(`__init__`)とメソッド定義の順番はどうであるか
# 結論
– メソッド定義が**先**、イニシャライザが**後**
# テスト環境
– Python 3.10.12
– Ubuntu 22.04.4 LTS (WSL2)
# テストコード
“`python
class TestClass():
def __init__(self, arg_func):
self.func = arg_func // self.funcに引数を代入
def __call__(self):
self.func()
def func(self): // メソッドを定義
print(“method func called”)

def f():
print(“arg func called”)

test = TestClass(f)
test()

/*
— 実行結果 —
arg func called
*/
“`

元記事を表示

ImportError: libGL.so.1: cannot open shared object file: No such file or directoryへの対処法

# 環境
ubuntu 22.04
jupyter notebookで実行

# やったこと

~~~
!apt update
!apt install libgl1-mesa-glx
~~~

# 結果

libGL.so.1 がインストールされ、エラーが解消された。

元記事を表示

paizaのスキルチェック見本問題を解いてみた

# はじめに
paizaのスキルチェック見本問題を解きました

## 問題
>野球の各打者はストライクが 3 つたまるとアウトとなり、ボールが 4 つたまるとフォアボールとなります。
アウトあるいはフォアボールになると、この打者の番は終了します。
>
>あなたはストライクとボールを判定してコールする審判です。
その場の状況に合わせて適切なコールを出しましょう。
>
>【コール一覧】
ストライクが 1 〜 2 つたまったとき → “strike!”
ストライクが 3 つたまったとき → “out!”
ボールが 1 〜 3 つたまったとき → “ball!”
ボールが 4 つたまったとき → “fourball!”
>

>ある打者の番における投球の結果 (ストライクまたはボール) が与えられるので、各投球に対してどのようなコールをすればよいかを出力してください。
>なお、実際の野球にあっても上記にないルール (ヒット、ファウルなど) については考慮する必要はありません。

>1 球目: ボール → “ball!”
>2 球目: ストライク → “strike!”
>3 球目: ボール

元記事を表示

【Python】超個人的Pythonことはじめ

実務経験あったものの、基礎がゆるゆるだったため、Python学習始めました。
学習のメモをつらつらと。

# 文法系

## 型ヒント

### 引数、戻り値の型を指定する場合
“`ruby
# 引数と戻り値にstr型を指定
def func(title: str) -> str:
return title

# 戻り値がない場合
def func(title: str) -> None:
print(f”このタイトルは、{title}です”)

“`

### 特定の「値」のみを許可する場合
“`ruby
from typing import Literal
TYPE = Literal[‘txt’, ‘html’]
“`

なお、型ヒントはあくまでヒントのため、異なる型を代入してもエラーにはならない。

## リスト内包表記

基本構文: `変数を使った処理 for 変数 in イテラブルオブジェクト`

if文を含む構文: `変数を使った処理 for 変数 in イテラブルオブジェクト if 条件式`

“`ruby: test.py
# 基本形
nu

元記事を表示

yfinanceでエラー発生

株価の取得を毎週行っていたところエラーが発生。
バージョンは「0.2.41」。
どうやら色々バグがある模様だったのでgoogle colabにて直前バージョンの「0.2.40」を指定してインストールしたところ従前どおりの動作が確認できました。
pandas_datareaderと相性が悪い?

元記事を表示

Workato:Pythonコネクタで任意のモジュールをインストールして利用する

# はじめに

WorkatoのPythonコネクタは、基本的には用意されたモジュールのみの利用が可能ですが、自分が使いたいモジュールが用意されていない場合もあると思います。そのような場合は、pipモジュールを利用することで、任意のモジュールをインストールして利用することが可能です。

なお、Pythonコネクタは /tmp 以下のみ書き込み可能なため、モジュールのインストール先も /tmp とする必要があります。また、モジュールのインストールはコード上で行い、インストールしたモジュールをコード上で動的にインポートして利用する形となります。

# コード

以下は、boto3(AWS SDK for Python)モジュールをインストールする例になります。boto3をインストールすることで、Pythonコネクタ上から簡単にAWSのリソースがAPI操作できるようになります。

なお、Workatoのレシピの作成手順および設定方法については、ここでは割愛します。
(Pythonコネクタについてある程度習熟していることを前提とします)

“`python
import pip
import

元記事を表示

Workato:Pythonコネクタで /tmp を活用してみる

# はじめに

WorkatoのPythonコネクタでは一時ディレクトリ(/tmp)が利用できないと思っていましたが、検証を進めたところ利用できることがわかりました。

Workatoのコネクタのアクションはそれぞれが独立したコンテナであり、かつエフェメラルなコンテナ(実行後に削除される、揮発性のコンテナ)で実行されるため、アクションを跨いで /tmp の保存内容を共有することはできないのと、実行時間の制限(30秒)に注意する必要はありますが、ちょっとした処理で便利に活用することはできるかと思います。

# 利用例
## 容量の大きなファイルや複数のファイルを処理する

容量の大きなファイルをPythonコネクタのrequestモジュールを利用して直接ダウンロードして取得したり、base64エンコードされたファイルを変数で渡して /tmp へ展開することで、Python3コネクタ上で容量の大きなファイルや複数のファイルを処理することができます。

### 例:URL指定でファイルをダウンロードし/tmpへ保存する

以下の通り Input fieldsおよびOutput fieldsを

元記事を表示

Python3: 文字列収集 (paizaランク S 相当)やってみた

https://paiza.jp/works/mondai/real_event/word_collection
“`py:
N, M = map(int, input().split())

MARKET = [(lambda item, price: (item, int(price))
)(*input().split())
for _ in range(N)
]
WANTEDS = [input() for _ in range(M)]

for w in WANTEDS:
print(
sum(price for item, price in MARKET
if item.startswith(w)
)
)
“`
市場のものと欲しいものをそれぞれ読み込み、欲しいもの毎にそれで始まる文字列の値段を集計する。
これだとタイムアウトしそうだが、結構余裕でクリアーだったのだが?

解答例を見ると、入力をうけとった時点

元記事を表示

paizaプログラミング問題Rank S (Python)

[paiza×Qiita記事投稿キャンペーン](https://paiza.jp/pages/campaign/paiza-qiita)に参加しました.
関連リポジトリは,以下になります.

https://github.com/tomtkg/Python-Sample/tree/main/paiza

ここでは,Rank S問題の解答と簡単な解説を公開します.
言語はPythonを選択しました.結果は以下のようになりました.

# Rank S
## 村人の友好関係
https://paiza.jp/works/mondai/s_rank_skillcheck_archive/group_popularity

“`python:group_popularity.py
import numpy as np

N, M, Q = map(int, input().split())
N += 1 # 入力が1~Nのため

m = np.zeros((N, N), dtype=int)
for _ in range(M):
a, b, f = map(int, input().

元記事を表示

Python3: mod7占い (paizaランク S 相当)やってみた

https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7

“`py:
from itertools import combinations

N = int(input())
DECK = [int(input()) for _ in range(N)]

print(
sum(1 for cards in combinations(DECK, 3)
if sum(cards) % 7 == 0
)
)
“`

デッキを読み込んで、3枚足すと7の倍数になる組み合わせを計数していく。まんまですな。

これでもタイムアウトせず、ACしてしまったんだけど、解法例を見ると直接modを取るんじゃなくて、早い段階でmod 7を取って、nCrの計算に持ち込む感じらしい。

そっちの方向でやってみた。

“`py:
from itertools import combinations_with_replacement, groupby
from math import prod

元記事を表示

Python リスト内包表記とappend()の比較について

# はじめに
 リスト内包表記は簡潔に記載できるが、どちらを使った方が良いのか。速度の面で比較しました。
 プログラムは、オイラリー・ジャパンの「入門Python3」を参考にしています。

# timeitを使用した時間の比較
“`python:python
from timeit import timeit

def make_list_1():
result = []
for value in range(1000):
result.append(value)
return result

def make_list_2():
result = [value for value in range(1000)]
return result

print(‘make_list_1 の所要時間 ’, timeit(make_list_1, number = 1000),’秒’)
print(‘make_list_2 の所要時間 ’, timeit(make_list_2, number = 1000),’秒’)

元記事を表示

Python3: 島探し (paizaランク S 相当)やってみた。

おもしろそうなのでやってみました。

https://paiza.jp/works/mondai/s_rank_skillcheck_sample/search-island

“`py:
# 探索する方向に応じた次に探索する方向:
# 0:South, 1:East, 2:North, 3:West
DIR = ( (0, 1, 3)
,(1, 2, 0)
,(2, 3, 1)
,(3, 0, 2)
)

# 探索する方向に応じたとなりへの差分
D = ( ((1, 0), (0, 1), (0, -1))
, ((0, 1), (-1, 0), (1, 0))
, ((-1, 0), (0, -1), (0, 1))
, ((0, -1), (1, 0), (-1, 0))
)

W, H = map(int, input().split())
A = [ [False] * (W + 2) if i == 0 or i == H + 1 else
[Fal

元記事を表示

Python3: お菓子の詰め合わせ (paizaランク A 相当)やってみた

おもしろそうなのでやってみました。

https://paiza.jp/works/mondai/a_rank_skillcheck_archive/school_hiking

“`py:
from itertools import combinations

length_from = (
lambda N: lambda amount: lambda sorteds:
next(
length
for length in range(N, 0, -1)
if sum(sorteds[:length]) <= amount ) ) remain_from = ( lambda length: lambda amount: lambda sorteds: min( diff for c in combinations(sorteds, length) if (

元記事を表示

Python3:村人の友好関係 (paizaランク S 相当)やってみた。

おもしろそうなのでやってみました。

https://paiza.jp/works/mondai/s_rank_skillcheck_archive/group_popularity

“`py:
N, M, Q = map(int, input().split())

relations = [tuple(map(int, input().split()))
for _ in range(M)
]

relations.sort(key=lambda x: x[2], reverse=True)

states = [False] * (N + 1)
for _ in range(Q):
state, member = (
lambda op, m: (True if op == “+” else False, int(m))
)( *input().split() )

states[member] = state

print(
next(

元記事を表示

paizaプログラミング問題Rank A, B (Python)

[paiza×Qiita記事投稿キャンペーン](https://paiza.jp/pages/campaign/paiza-qiita)に参加しました.
関連リポジトリは,以下になります.

https://github.com/tomtkg/Python-Sample/tree/main/paiza

ここでは,Rank A, B問題の解答と簡単な解説を公開します.
言語はPythonを選択しました.結果は以下のようになりました.

# Rank A
## お菓子の詰め合わせ
https://paiza.jp/works/mondai/a_rank_skillcheck_archive/school_hiking

“`python:school_hiking.py
from itertools import combinations

N, X = map(int, input().split())
a = [int(input()) for _ in range(N)]

for r in range(N):
b = [X – sum(c) for c in combi

元記事を表示

Cloud Run Jobsの実践

# はじめに

この記事では Cloud Run でいくつかのジョブを作成して Cloud Run Jobs の実践的な使い方を紹介します。

なお、Cloud Runの利用料に関してはについては[公式の案内](https://cloud.google.com/run/pricing?hl=ja)を確認してください。

また、「そもそもCloud Run Jobsってなに?」という方は前に書いた記事(「[怖くないCloud Run](https://qiita.com/sugarperson/items/548bacebdd1de4ccc41c)」)も参考にしていただけると幸いです。

# 演習の準備

## プロジェクトの作成

1. [Google Cloudダッシュボード](https://console.cloud.google.com/projectselector2/home/dashboard?hl=ja)を開き「プロジェクトを作成」を選択してください。

1. プロジェクトの作成画面が開いたら cloud-run-drill という名称の新規プロジェクトを作成してく

元記事を表示

paizaプログラミング問題Rank C, D (Python)

[paiza×Qiita記事投稿キャンペーン](https://paiza.jp/pages/campaign/paiza-qiita)に参加しました.
ここに書いたプログラムの関連リポジトリは,以下になります.

https://github.com/tomtkg/Python-Sample/tree/main/paiza

ここでは,Rank C, D問題の解答と簡単な解説を公開します.
言語はPythonを選択しました.結果は以下のようになりました.

# Rank C
## 残り物の量
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/leftover

“`python:leftover.py
m, p, q = map(int, input().split())
print(m * (100 – p) * (100 – q) / 1e4)
“`
入力文字列を数値`m`,`p`,`q`に分配し,数値演算します.
なるべく整数で計算して,一番最後で小数表記に直す除算を適用しています.

パーセント表記は,安易に小

元記事を表示

【Python3】【殿堂入りキャンペーン】村人の友好関係 (paizaランク S 相当):アルゴリズム付きの解説

https://paiza.jp/works/mondai/s_rank_skillcheck_archive/group_popularity

この問題では、村人の同好会グループの管理と人気度の計算を効率的に行う必要があります。Union-Findデータ構造を用いることで、友好関係を管理し、入退会ログに基づいて人気度を計算することができます。

### アルゴリズム設計

**概要:**
– 村人間の友好度データを受け取り、Union-Findを用いて管理します。
– 各村人が同好会に入退会するたびに、同好会の人気度を計算します。

### 手順

1. **Union-Findクラスの定義**:
– `find`メソッドでルートを探し、パス圧縮を行う。
– `union`メソッドで2つの集合を結合する。

2. **データの読み込み**:
– 村人の数 `N`、友好関係の数 `M`、ログの数 `Q` を読み取る。
– 友好関係のデータをリスト `all_edges` に格納し、友好度の降順でソートする。

3. **最小全域木(MST)の構築**:

元記事を表示

OTHERカテゴリの最新記事