Python3関連のことを調べてみた2022年12月19日

Python3関連のことを調べてみた2022年12月19日

discord.pyでcogを使う

# バージョン情報
Python 3.8.12
discord.py 2.1.0

# 最小限に近いもの
## メインファイル
“`Python:main.py
import discord
from discord.ext import commands

prefix = ‘!’
COGS = [
“Greeting”
]

class MyBot(commands.Bot):
“””起動用のあれこれ”””
async def setup_hook(self):
for cog in COGS:
try:
await self.load_extension(cog)
except Exception as e:
print(e)
await self.tree.sync()

# 接続に必要なオブジェクトを生成
intents = discord.Intents.default()
intents.messages = True
bot = MyBot(
command_prefix

元記事を表示

Python3.11を最速インストールしようとしてSSLモジュールでハマった話

お疲れ様です。KBTです。
待ちに待ったPython3.11がリリースされてから早2ヶ月、皆さんそろそろPython3.6.Xからの乗り換えを検討されている頃でしょうか。
私も早速インストールしてみましたので、今回はインストール時にハマった話を書いてみたいと思います。

# 今回の環境
“`
# cat /etc/centos-release
CentOS Stream release 8
“`

# OpenSSLをインストールする
まずはOpenSSLをインストールします。
折角新しくインストールするなら今をときめくOpenSSL3系をインストールしたいですよね。
試しにdnfでインストールしようとしたところ、本日(2022/12/17)時点で3.0.1がインストールされるようです。
“`
# dnf install openssl3
Last metadata expiration check: 3:49:02 ago on Sat 17 Dec 2022 08:33:35 AM JST.
Dependencies resolved.
===================

元記事を表示

python 関数の可変長位置引数について改めて考える

## 可変長位置引数(スター引数)
可変長位置引数を用いると関数の呼び出しコードが簡潔になり読みやすくなる。

以下のように初めての人と知り合いで発言を区別するコードを記述する。
~~~python:exam.py
def hello(message, name):
if not name:
print(‘nice to meet you’)
else:
print(f'{message}! {name}さん’)

hello(‘こんにちわ’, ‘saku’)
hello(‘こんにちわ’, []) # 第二引数を指定しないとTypeErrorが発生する

>>>
こんにちわ! sakuさん
nice to meet you
~~~
このコードに可変長位置引数を使ってみる
~~~python:exam2.py
def hello(message, *name):
if not name:
print(‘nice to meet you’)
else:
print(f'{message}! {

元記事を表示

【PySimpleGUI】画像閲覧とPDF画像変換アプリを自作してみた

# PySimpleGUIを使って、デスクトップアプリケーションを自作

## 目的と背景

日々の業務でPDF資料を使うことが非常に多い。また、PDFの一部だけ切り取って、共有したいという機会も多く、PDFを開いて画面キャプチャしたりするのが手間。
Windows標準のエクスプローラーでも画像やPDFの中身を見ることは出来るが、他の情報(ディレクトリや、そのほかの実行ファイルなど)が多く扱いにくい。

## 完成品と動作

以下のような、GUIを作成。

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3052682/c78cdb19-356e-864b-a833-ad78ef8b585d.png)

タブ1は、任意のディレクトリの画像形式(pnh,jpeg)のみが一覧で表示され、クリックすると中身の画像が閲覧できる。
※サイズは任意サイズに変更可能
※都合の良いPDFファイルがなく自作…

![画像4.png](https://qiita-image-store.s3.ap-nort

元記事を表示

【python】勉強メモ-その6 辞書について

### 1.はじめに
今回は、完全に自分用のメモとなります。

##### value(値)の取得方法
“`sample_01.py
favorite_languages = {
“Jane”: “python”,
“Sarah”: “c”,
“Ed”: “ruby”,
“Philip”: “python”,
}

ans = favorite_languages[“Jane”]
print(ans)

“`

“`result.txt
python
“`

##### .get() 存在しないキーにアクセスした場合のエラーハンドリング

`dict.get(“key”, “返すメッセージ”)`
第二引数を省略した場合は、`None`が返される。

“`sample_02.py
favorite_languages = {
“Jane”: “python”,
“Sarah”: “c”,
“Ed”: “ruby”,
“Philip”: “python”,
}

ans = favorite_languages.g

元記事を表示

paizaラーニング「i 番目の出力 3 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_i-thinput_step3
#### 私の解答
“`Python3
n, m = map(int,input().split())
S = [“”] * m
values = input().split()
for i in range(m):
S[i] = values[i]
print(S[n-1])
“`
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

S = [0] * M
values = input().split()
for i in range(M):
S[i] = values[i]

print(S[N – 1])
“`

元記事を表示

paizaラーニング「文字列の配列の入力 2 Python3編」

#### 私の解答
“`Python3
li = [x for x in input().split()]
for ele in li:
print(ele)
“`

#### 解答例
“`Python3
S = [“”] * 10
values = input().split()
for i in range(10):
S[i] = values[i]

for s in S:
print(s)
“`

元記事を表示

paizaラーニング「i 番目の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step3
#### 私の解答
“`Python3
li = [“good”, “morning”, “paiza”,”813″, “pa13”]
print(li[3-1])
“`
#### 解答例
“`Python3
li = [“good”, “morning”, “paiza”, “813”, “pa13”]
print(li[2])
“`

元記事を表示

paizaラーニング「全要素の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step2
#### 私の解答
“`Python3
li = [“good”, “morning”, “paiza”,”813″, “pa13”]
for a in li:
print(a)
“`
#### 解答例
“`Python3
li = [“good”, “morning”, “paiza”, “813”, “pa13”]
for ele in li:
print(ele)
“`

元記事を表示

paizaラーニング「要素数の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step1
#### 私の解答
“`Python3
li = []
li.append(“Hello”)
li.append(“paiza”)
li.append(“1234”)
li.append(“pa13”)
print(len(li))
“`
#### 解答例
“`Python3
li = [“Hello”, “paiza”, “1234”, “pa13”]
print(len(li))
“`

元記事を表示

paizaラーニング「要素の挿入 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__elm_insert
#### 私の解答
“`Python3
N, M, K = map(int, input().split())
A = [int(x) for x in input().split()]

A.insert(M-1, K)
for ele in A:
print(ele)
“`
解答例2とほぼ同じでした。
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])
K = int(values[2])

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(values[i])

A.insert(M – 1, K)

for a in A:
print(a)
“`
#### 解答例2
“`Python3
N, M, K = map(i

元記事を表示

Slackのリアクション数を集計するアプリを作ってみた

本記事はCocone Advent Calendar 2022の18日目の記事となります。
# はじめに
はじめまして、ココネ新卒クライアントエンジニアの、たこくらげです。

ココネのエンジニア文化の1つにcode-festaというものがあります。
これはSlackのチャンネルで自分が実装したコードの共有や技術tips、実装で詰まった部分などを共有し、それに対してのリアクション数で半期毎に表彰を行うというものです。

code-festaは素晴らしい文化なのですが、一方で信じられないことに以前までこのリアクション数の集計は手動でやっていました…。(1時間とか普通にかかっていた)
流石にめんどくさいのでPythonの勉強を兼ねて簡易的な集計アプリを作りました。

# 作ったもの
まず初めに、このアプリを実行するためにあらかじめslack appを作成し、集計を行いたいチャンネルに追加をします。
今回は`conversations.history`と`users.info`を叩ければいいのでスコープは`users:read`と`channels:history`があれば良いかと思います

元記事を表示

リーダブルコードを読んで過去書いたコードを振り返る(表面上の改善編)

本記事は、[ハンズラボ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/handslab) 18日目の記事です。

# はじめに
断捨離していたら新卒の時に購入した[リーダブルコード](https://amzn.asia/d/0Oz7MMh)を見つけたので読んでみました。
本記事では、リーダブルコード第1部「表面上の改善」の内容を自分の解釈を踏まえて、過去に書いたコードや読んだコードを振り返ります。
# 本題
## 理解しやすいコード
以下は、三項演算子を入れ子で使っているパターンです。
ワンライナーで書かれていてとてもトリッキーなことをしているように見えます。
このコードを最初見た時、意味がわかりませんでした。

“`js
this.isDirty ? this.validFunc ? this.validFunc(this.modelValue) : this.errMessage ? false : true : null;
“`
三項演算子はかっこいいし便利ですが以下の書き方の方が読みやすいと思いま

元記事を表示

データ可視化Webアプリケーションをplotly-Dashで作る

# はじめに

Pythonで手軽にデータ可視化用Webアプリケーションを作れる[plotly](https://plotly.com/python/)と[Dash](https://dash.plotly.com/introduction)というライブラリを紹介して、ちょっと使ってみようと思います。

ざっくり言うと、plotlyで描いたグラフをWebアプリケーションフレームワークのDashで作ったものに載せることで完成するという使い方になっています。

# plotlyとは

plotlyはデータをさまざまなグラフで可視化できるPythonライブラリです。作成したプロットはインタラクティブな操作が可能で、ズームインしてさらに分析するなどもできます。

pipで簡単にインストールできます。(2022/12/16時点でバージョン5.11.0が最新版でした)
“`
$ pip install plotly
“`

## サブモジュールについて

* `plotly.express`
* データを可視化するための関数が定義されています。
* 高レベルなAPIを提供してい

元記事を表示

paizaラーニング「要素の削除 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__elm_erase
#### 私の解答
“`Python3
N, M = map(int, input().split())
A = [int(x) for x in input().split()]
del A[M-1]
for ele in A:
print(ele)
“`
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(values[i])

del A[M – 1]

for a in A:
print(a)
“`
#### 解答例2
“`Python3
N, M = map(int, input().split())
A = [int(x) for x in input().spl

元記事を表示

paizaラーニング「配列末尾への追加 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__push_back
#### 私の解答
“`Python3
N, M = map(int, input().split())
A = [int(x) for x in input().split()]

A.append(M)
for ele in A:
print(ele)
“`
私の解答は解答例2とほぼ同じでした。
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(values[i])

A.append(M)

for a in A:
print(a)
“`
#### 解答例2
“`Python3
N, M = map(int, input().split())
A = [int(x)

元記事を表示

paizaラーニング「要素のカウント Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__elm_count
#### 私の解答
“`Python3
n, m = input().split()
li = [x for x in input().split()]
ans = li.count(m)
print(ans)
“`
私の解答では、文字列をカウントしていますが、解答例では、数値をカウントしていました。
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(values[i])

print(A.count(M))
“`
#### 解答例2
“`Python3
N, M = map(int, input().split())
A = [int(x) for x in input().split(

元記事を表示

paizaラーニング「配列の反転 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__array_reverse
#### 私の解答
“`Python3
n = int(input())
li = [int(x) for x in input().split()]
new_li = li[::-1]
for ele in new_li:
print(ele)
“`
### 解答例1
“`Python3
N = int(input())

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(values[i])

reversed_A = reversed(A)

for a in reversed_A:
print(a)
“`
### 解答例2
“`Python3
N = int(input())

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(va

元記事を表示

paizaラーニング「配列のソート Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__array_sort
#### 私の解答
“`Python3
n = int(input())
li = [int(x) for x in input().split()]
for ele in (sorted(li)):
print(ele)
“`
私の解答は解答例3に近かったです。

#### 解答例1
“`Python3
N = int(input())

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(values[i])

sorted_A = sorted(A)

for a in sorted_A:
print(a)
“`
#### 解答例2
“`Python3
N = int(input())

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(va

元記事を表示

paizaラーニング「配列の連結 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__array_join
#### 私の解答
“`Python3
n, m = map(int, input().split())
li_n = [int(x) for x in input().split()]
li_m = [int(x) for x in input().split()]

for ele in li_n:
print(ele)
for ele in li_m:
print(ele)
“`
リストを連結させる+演算子を知らなかったので、私の解答は上記のようになりました。
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

A = [0] * N
values = input().split()
for i in range(N):
A[i] = int(values[i])

B = [0] * M
values

元記事を表示

OTHERカテゴリの最新記事