- 1. pythonのUnicodeDecodeError
- 2. 区間和
- 3. python GUI tcl/tk 1クラスの複数ファイル分割
- 4. discordBOTの改良をした話
- 5. 30秒で読める Python のデコレータの基礎
- 6. ABC348 with Python (A~E)
- 7. Numpy ndarray を使おう
- 8. python認定基礎試験3章と4章のまとめ
- 9. pythonでpipをインストールしたがモジュールが使えない問題
- 10. 探索アルゴリズム①【Algorithm-Data構造入門Ⅴ】
- 11. 累積和
- 12. 【Python】指定したデリミタで文章を分割し、リストの要素としてそれぞれ追加する方法
- 13. 久しぶりのターミナルでpythonを起動させる方法を忘れた。
- 14. Vtuber Python3編
- 15. [Colab] [Python3]機械学習により、日経平均株価を予測する方法
- 16. macでpipをインストール
- 17. pip listにあるbeautifulsoup4とbs4の違い
- 18. プログラム練習問題:経理
- 19. ABC_347
- 20. それ,numpy で書かない?–9–
pythonのUnicodeDecodeError
# エラー
1.excelで作ったcsvファイルをvscode上で変更を加える。
2.pythonファイルでそのcsvを読み込ませる。
↓
“`
UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0xef in position 0: illegal multibyte sequence
“`
エラーが表示される(泣)# 解決
https://qiita.com/Ryo-0131/items/27829642d2f767507db0「実際のファイルの文字コードと読み込み時に指定した文字コードが異なっているときに表示される変換エラーです。」
どうやらcsvファイルを変更を加えた→実際のファイルの文字コードと異なる文字コードを加えてしまった。と解釈。
変更前のファイルに戻して読み込みをしたら、無事読み込みに成功!!
区間和
前回のを参考に、
今回は区間和ってことだから
おそらく区間ごとに和を取ってそれを配列に入れて
それらを差し引きすればいけるんじゃないかなと思って
そうしてみました。“`py
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
ans = A[:]
for i in range(1,N-1):
ans[i] += ans[i+1]print(ans)
for _ in range(K):
A,B = map(int,input().split())
print(ans[A-1] + ans[B-1])
“`
ただ、ケース1の2つ目で-10足りないことが判明し。
計算をしてみたところ考え方としてはちょっと違うようです。
時間もなかったのでちょっと答えを見てみました。うーん。。。別に累積和はそのままでよかったみたいです。
ただ計算式が間違っていたようで。
区間を計算するには累積和の一番大きいやつ(4)から、一番小さいやつ(2(−1))を引く感じでよか
python GUI tcl/tk 1クラスの複数ファイル分割
# 実行サンプル
tcl/tk で1つのクラスを複数ファイルに分割するサンプル。
1つのクラスが長文になった場合に可読性を良くしたいため。# 実行環境
windows10
python3.9.5pythonモジュール tcl/tk
# 実行手順
python プログラムファイル.py# ソースコード
main.py, fileB.py の2つのファイル
fileBの関数を呼び出すときは必ず self を引数で渡すようにするmain.py
“`
import tkinter as tk
import fileBclass Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()def create_widgets(self):
self.entry1 =
discordBOTの改良をした話
皆さん、こんにちは。takazonessです。
先日、discordの音楽BOTを作りましたが、中身を少し改良したので、そのコードを記事として記しておこうと思います。https://qiita.com/takazoness/items/04d0d15ab3eff09389c2
↑これの改良版# 改良点
・日本語化
・スキップ機能の追加
・キュー機能の追加
・再生後の音源ファイルを削除する機能を追加# コード
“`python:discordbot.py
import asyncio
import discord
import yt_dlp as youtube_dl
from discord.ext import commands
from collections import deque
import os# エラーについてのメッセージを非表示にする
youtube_dl.utils.bug_reports_message = lambda: ”ytdl_format_options = {
‘format’: ‘bestaudio/best’,
30秒で読める Python のデコレータの基礎
デコレータは関数を返す関数として作ります。
“`py
from typing import Callable
def deco(f: Callable) -> Callable:
…
return wrapper
“`関数にデコレータをつけると、関数が置き換わります。
“`py
def just_print():
print(“ha.”)
just_print() # just_print が呼ばれる。@deco
def just_print2():
print(“haha.”)
just_print2() # wrapper が呼ばれる。
“`wrapper の中では通常、第一引数で受け取った関数を実行します。
“`py
# … の中身
def wrapper(): # 必要に応じて引数 *args, **kwargs
# ~~~ 前処理 ~~~
retval = f()
# ~~~ 後処理 ~~~
return retval
“`以
ABC348 with Python (A~E)
ABC348のA~E問題をpythonで解説していきます。今回のC問題は平和でしたね(・∀・)
# A – Penalty Kick
## 問題高橋君はサッカーの試合で $N$ 回ペナルティキックを蹴ります。
高橋君は $i$ 回目のペナルティキックでは、$i$ が $3$ の倍数の場合は失敗し、それ以外の場合は成功します。
高橋君がペナルティキックを蹴ったときの結果を出力してください。
https://atcoder.jp/contests/abc348/tasks/abc348_a
## 考察
問題文の通り、3の倍数回目のペナルティキックではx
、それ以外はo
とすればよい。## コード
“`python:A.py
N = int(input())
ans = []
for i in range(1, N + 1):
if i % 3 == 0: # 3の倍数回目ならば失敗
ans.append(“x”)
else:
ans.appe
Numpy ndarray を使おう
## 1. Numpy ndarray を使う
“`python
import numpy as np
“`### 1.1. 初期化しないベクトル(内容は不定)
“`python
np.empty(10)
“`array([0.54296942, 0.98085815, 0.52797689, 0.09862195, 0.60034229,
0.86971354, 0.82463765, 0.13218043, 0.36232667, 0.3283693 ])### 1.2. 0.0 を n 個含むベクトルを定義する
“`python
a = np.zeros(10)
a
“`array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
### 1.3. 0.1 を n 個含むベクトルを定義する
“`python
a = np.repeat(0.1, 10)
a
“`array([0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0
python認定基礎試験3章と4章のまとめ
●pop()
pop()引数が書かれていない場合は最後の末尾を削除する。
●return
“`py
def num(a,b):
return a+b
result = num(20,30)print(result)
#出力結果
50
“`●range
range(0,4)
0,1,2,3
range(1,4)
1,2,3,●enumerate
反復可能体・・・リスト、文字列など
“`py
#iがindexの番号を格納、aに反復可能体の要素を格納
for i,a in enumerate(‘word’):
if i == 2:
print(a)
#出力結果
r
“`●zip
“`py
for n,c in zip([1,2,3,4],[‘1′,’4′,’9′,’あ’]):
print(c*n)
#出力結果
1
44
999
ああああ
“`
pythonでpipをインストールしたがモジュールが使えない問題
「requests」モジュールを使おうとしたところ
![pythonでpipを使うmac2024-04-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717619/6c9424c9-8453-9237-ff84-17a63a40c409.png)
使えないのでpipをダウンロードする。https://qiita.com/dandan999/items/ce5d27e45b2263b0c061
しかし…
表示が変わらないのでVScodeのターミナルを確認すると
![pythonでpipを使うmac 22024-04-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717619/9d798628-d4a7-a3f6-8359-359afb39b652.png)
となっているのでインストールしたバージョン3.8に変更する。# 対処
参考
https://www.codevace.com/v
探索アルゴリズム①【Algorithm-Data構造入門Ⅴ】
# 探索アルゴリズムとは
探索アルゴリズムは、データの集合の中から特定の要素を見つけるための手法です。
2回に分けて主要な探索アルゴリズムを備忘録的にまとめていきます。# 基本的な探索アルゴリズム
ここでは、よく使われる基本的な探索アルゴリズムとして以下の4つを紹介します。
– 線形探索(Linear Search)
– 2分探索法(Binary Search)
– ハッシュ法(hashing)←次回紹介
– 2分探索木(binary tree)←次回紹介それぞれ、Pythonでの実装方法も紹介していきます。
# 線形探索(Linear Search)
線形探索(Linear Search)は、データの集合(通常はリストや配列など)を先頭から順番に走査し、目的の要素を探す探索アルゴリズムです。具体的には、最初の要素から順に目的の要素と比較し、一致するかどうかを確認します。もし一致する要素が見つかれば、その位置を返して探索を終了します。しかし、見つからない場合は、全ての要素を比較し終えるまで探索を続けます。### メリット・デメリット
線形探索は非常に単純で実装が容易ですが
累積和
https://paiza.jp/works/mondai/query_primer/query_primer__cumulative_sum
ひとまずやってみたのですが、
ケース3と4でタイムオーバーになってしまいました。“`py
N, K = map(int,input().split())
A = [int(input()) for _ in range(N)]
B = [int(input()) for _ in range(K)]for i in B:
sum = 0for j in range(0,i):
sum += A[j]print(sum)
“`
テーマが累積和っていうらしいですが
“`
A_1 から A_i までの和を sum[i] とすると、
sum[i] = sum[i-1] + A[i] という関係が成り立つので
すべての i について sum[i] を計算しておく“`
ん???
ちょっとよくわかりませんでした。。。
でも調べると、たとえば
3つの配列の要素が下
【Python】指定したデリミタで文章を分割し、リストの要素としてそれぞれ追加する方法
# 概要
句点で区切られている文章を、句点ごとに区切ってリストに変換する方法を紹介します。複数の文からなる文章を指定したデリミタ(句点など)で分割し、それぞれの部分にデリミタを追加するという処理を行います。
# サンプルコード
例えば、
“`
‘私はりんごが好きです。また、バナナも良いですよね。皆さんの好きなフルーツ教えてください。’
“`
という文章を「。」ごとに区切る関数を作成しました。
「。」だけでなく、「♪」や「!」の場合も同様に以下の関数で可能としています。“`py
def split_paragraph_into_sentences(paragraph, delimiters):
sentences = [paragraph]for delimiter in delimiters:
sentences = [part + delimiter for sentence in sentences for part in sentence.split(delimiter)[:-1]] + [sentence.split(de
久しぶりのターミナルでpythonを起動させる方法を忘れた。
①自分のmacでpythonを起動する際にpythonがインストールされているか確認する。
“`
$ python3 –version
Python 3.8.6
“`②pythonを起動させる
“`
$ python 3.8.6
-bash: python: command not found
“`
あれ?
“`
$ python
-bash: python: command not found
“`
なんで?
“`
$ python -v
-bash: python: command not found
“`
ターミナルでpythonを起動させる方法を忘れてしまった。# 対処
参考
“`
$ python3
Python 3.8.6 (v3.8.6:db455296be, Sep 23 2020, 13:31:39)
[Clang 6.0 (clang-600.0.57)] on darwin
Type “help”, “copyright”, “c
Vtuber Python3編
https://paiza.jp/works/mondai/query_primer/query_primer__vtuber
なかなか難しいですね。。。
自分の方針としては、memberに、メンバーシップの有無を0と1で表して、投げ銭分を合計で表して。。。みたいなことを考えたんですが、はじめて登録するメンバーはどうすれば?というところで詰まっちゃいましたね。。。“`py
N = int(input())
members = {}
for _ in range(N):
A = input().split()
if A[1] == “give”:
members[A[0]] = (A[2],0)
else:
members[A[0]] = (0,1)print(members)
“`
回答を見ると、メンバーシップ登録と、PowerChatはわけるということでした。
ただ、それ以外にもちょっと難しいところがあったので一つずつコメントしながら
作成します“`py
N = int(input())
[Colab] [Python3]機械学習により、日経平均株価を予測する方法
## 要 旨
Colabを使用して、機械学習により翌日の日経平均が上昇するか下落するかを予測するコードを記述します。
## 実施要領
colabにより、以下を記述します。
“`python3
#nikkei_predicted.py
#coding: UTF-8
#Pythonsのライブラリから日経平均10年分のデータを取得して予測するプログラム(1949.05.16からデータあり)
#前日から4日分のデータから翌日の株価を予測する
#直近300日間のデータを使用
#全データの前半75%を訓練に使用、直近25%でテスト実施。
import time
t1 = time.time()from sklearn import svm
from pandas_datareader import data as web
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import csv
import datetimen225 = web.DataReader(“NIKKEI225”
macでpipをインストール
webスクレイピングをしたいのでpipをインストールする。
pythonのversion
“`
$ python3 –version
Python 3.8.6
“`pipをダウンロードする。
“`
$ sudo easy_install pip
sudo: easy_install: command not found
“`
ダウンロードできない(泣)。# 対処
参考
https://qiita.com/sho03/items/bafdf19592f6f9d71135
「get-pip.py」は事前にダウンロードしていたのでその後の作業をする。
“`
$ python3 get-pip.py
…
Successfully installed pip-24.0 wheel-0.43.0
“`インストールに成功する。
“`
$ which pip
/Library/Frameworks/Python.framework/Versions/3.8/bin/pip
“`
pipがの場所を確認できたら終了!
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より後ろの要素の中