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

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

パスワード作成 (paizaランク C 相当)

https://paiza.jp/works/mondai/string_primer/advance_step6

>K さんは paiza のアカウントを作成することにしました。そのためには、パスワードの設定が必要>なことがわかりました。
>そこで K さんは忘れないように、次のようなルールにのっとって N 文字のパスワードを設定するこ>とにしました。
>
>・ ルール
>K さんは N 文字のうち、 Q 文字だけ覚えておく文字を決めておく。
>具体的には n_i 文字目を c_i とだけ決めて、残りの全ての文字を C にする。
>
>K さんの設定したパスワードを当ててください。

という問題。

“`py
N = int(input())
Q = int(input())
for i in range(Q):
A =[list(map(str,input().split()))]
C = input()
for i in range(1,N):
if i == A[i-1][0]:
print(A[i-1][1])
else

元記事を表示

重複の削除 (paizaランク C 相当)

https://paiza.jp/works/mondai/string_primer/advance_step5

入力したものから重複を削除して出力せよという問題。
集合を使えばいけるってのは知ってたけど、ちょっとpythonでのやり方があやふやだったので
調べながら復習
知識として知っておくべきところは下記
・集合をつくるには`set()`
・集合の中の要素に同じものがあるかどうかを調べるには`not in`か`in`
・集合に追加するときは`add(element)`
(以下参考。詳しくは使う時に)
・要素を削除: `discard()`, `remove()`, `pop()`, `clear()`
・和集合: `|`演算子, `union()`
・積集合: `&`演算子, `intersection()`
・差集合: `-`演算子, `difference()`
・対称差集合: `^`演算子, `symmetric_difference()`

・ちなみに集合をつくってそれをソートすればいいやんと考えたけど、その場合、問題と意図が違う結果になる。つまり今の文字の順番のまま

元記事を表示

Python boto3を使ってS3からオブジェクトの一覧を取得する

今回はboto3でAWSを操作する最初の1歩ということでs3からオブジェクトの一覧を取得するまでやっていこうと思います。
前提としてPythonはインストール済みということで解説していきます。

# boto3の使い方

他のライブラリと同じくインストールが必要です。コマンドプロンプトでインストールします。
“`python3:ライブラリインストール
pip3 install boto3
“`
AWSリソースへアクセスするためにアクセスキー、シークレットアクセスキーが必要になります。
今回はAWSCLIがインストールされているため aws configureコマンドで設定しています。

これでインストールができたので、boto3を呼び出して記述していくだけです。

## boto3の記述方法

boto3の呼び出し方は以下の通りです。基本は以下の3つのステップになります。
1インポート
2クライアント、リソースオブジェクトの作成
3利用したいファンクションの呼び出し

### インポート
インポートは以下の様に記述します。
“`python:boto3インポート
impo

元記事を表示

【Python】dictionaryを使う前に、超便利メソッドを知ってくれ!エラーハンドリングはもうしなくていい!

どうも。ちょっぴり便利なコードを1000年集め続ける、おたくの[フリーレン](https://frieren-anime.jp/)です。
[東大GDSC](https://twitter.com/GDSCut)アドベントカレンダーへの寄稿です

## よくないね
辞書型でデータを管理しているとき、こんなコード書いていませんか?
“`python: よくないね.py
try:
#keyが存在しなかったらエラーが出る!!!
nanka_tsukau(dictio[key])
except KeyError:
#key無し???(nanka_tsukau()のエラーの可能性も)
nanka_tsukau(0)
“`

要するに、`key`が`dictio`に登録されているかもしれないし、登録されていないかもしれない。だから`key`がないときのエラーをハンドリングして、0を明示的に記述した方のコードを書く。

こんな面倒なこと、もうやめませんか?

## いいね
### 良いメソッドを紹介しましょう
#### 取得
`get(キー)`メソッドが便利です。

元記事を表示

[Python3 / caffe] python3でcaffeを動かすためのdocker imageをbuildする

# 1. 環境

“`bash:bash
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
$ docker –version
Docker version 20.10.17, build 100c701
$ docker compose version
Docker Compose version v2.6.0
“`
||version|
|:-|:-|
|Host machine|Ubuntu 20.04|
|Docker|20.10.17|
|docker compose|v2.6.0|

です。

# 2. 頼りにした記事

このあたりのDockerfileを元にimageを作成してみる。

https://github.com/ashokponkumar/caffe-py3/blob/master/Dockerfile

htt

元記事を表示

Python イテラブル・イテレーター・ジェネレータ式を簡潔に

Pythonを学ぶなかで、`イテラブル`、`イテレーター`、`ジェネレータ式`という存在に直面しました、、
これらはデータの処理やアルゴリズムの実装において非常に重要なものだそう。
本記事では、これらの概念をなるべく簡潔にまとめてみました。

# イテラブル (Iterable)
イテラブルは、メンバーを一つずつ返すことができるオブジェクトです。
リスト、タプル、文字列、辞書など、Pythonの多くの組み込みデータ型がイテラブルです。

### 特徴
– forループで繰り返し処理が可能
– イテレーターに変換できる(`iter()`関数を使用)。

### 例
“`py:python
my_list = [1, 2, 3]
for item in my_list:
print(item)
#->1
#->2
#->3
“`
### イテラブルではないもの
イテラブルでないとは、forループなどを使い、その要素を一つずつ取り出すことができないことを意味します。

#### 整数 (int)

整数は単一の数値を表すため、イテラブルではありません。例えば、for i in 5

元記事を表示

数値判定 Python3編

https://paiza.jp/works/mondai/string_primer/advance_step4

出力された文字列が数値変換可能かみる

“`py
S = input()
if S.isdecimal() == True:
print(‘YES’)
else:
print(‘NO’)

“`

他にもあたえらえたのが全部数値か調べるということで

“`py
s = input()

if s.isdigit():
print(“YES”)
else:
print(“NO”)
“`

元記事を表示

日時データの変換その2 (paizaランク C 相当)

https://paiza.jp/works/mondai/string_primer/advance_step3

>日時が “yyyy/MM/dd hh:mm” の形式で与えられるので、年・月・日・時・分をそれぞれ出力してください。(ただし、足りない部分は0埋めすること)

以前習ったfstringが活躍する。
書き方忘れてたかもなので復習する

“`py
date, time = map(str,input().split())
yyyy, MM, dd = map(str,date.split(‘/’))
hh, mm = map(str,time.split(‘:’))
print(f”{yyyy:0>4}”)
print(f”{MM:0>2}”)
print(f”{dd:0>2}”)
print(f”{hh:0>2}”)
print(f”{mm:0>2}”)
“`

元記事を表示

回文判定 Python3編

https://paiza.jp/works/mondai/string_primer/normal_step11

回分かどうか判定せよという問題
ループを回して1文字ずつ取り出して等しいか調べ等しくなければNOを出すというロジック。
文字列を逆にする書き方とzip関数を新たに学ぶ。

“`py
S = str(input())
reS = S[::-1]

flag = ‘YES’
for x, y in zip(S,reS):
if x != y:
flag = ‘NO’
break
print(flag)

“`
でも実は、SとreSが同じだったらOKなのである。
たしかに。。。。

“`py
S = str(input())
reS = S[::-1]
if S == reS:
flag = ‘YES’
else:
flag = ‘NO’
“`

元記事を表示

大文字小文字の反転 Python3編

https://paiza.jp/works/mondai/string_primer/normal_step8

1文字ずつ、大文字は小文字に、小文字は大文字にして出力せよという問題
pythonにはそれができる関数があるので

“`py
print(input().swapcase())
“`

これにて終わりですが、もしその関数がなかったらどう実装するか。
ひとまずその1文字ずつ切り出して大文字か小文字かを調べて変換するというのが考えられる。

1文字ずつ切り出す方法は以前やった。
小文字かを調べるのは`islower()`
他にも`isupper()`,`istitle()`がある。

“`py
s = input()

for character in s:
if character.islower():
print(character.upper(), end=””)
else:
print(character.lower(), end=””)

print()
“`

元記事を表示

pickle の逆アセンブリの命令の解説 (pickletools 使用)

pickle で作成したファイルをデバッグしたい場合に、逆アセンブリを読むこともあると思います。

こちらの記事がとても丁寧に解説されていて、非常にわかりやすく助かりました。

https://qiita.com/tanuk1647/items/4c2a305c7cc4e12ef99d

ですが、`pickletools` のプロトコル(バージョン)が違うからなのか、こちらに掲載されていないニモニックもあり、あまり日本語でまとまっているサイトも見当たらなかったので、いくつか追加で解説していきたいと思います。今回使用したプロトコルは `PROTO 4` です。

# STACK_GLOBAL (スタックを参照する GLOBAL)

冒頭の記事で紹介されている `GLOBAL` オペコードでは 2つの引数を取ってオブジェクトを作成しますが、 `STACK_GLOBAL` はかわりにスタックからオブジェクトを2個ポップして、(プッシュされた順に)`module_name` と `class_name` とし、`”module_name.class_name”`をスタックにプッシュします。

元記事を表示

Linuxを使えるようになろう #4

# Linux上でPythonプログラムを動かそう

これまでの勉強会でプログラムを動かす際には,Jupyter NotebookやGoogle Colabolatoryなどを使用してきたが,より複雑なプログラムを動かすには,これらでは限界がある.

そこで,今回はLinux上で,Pythonプログラムを動作させる方法を学んでいこう.

# emacsを使いこなそう

これまでもemacsは使用してもらったが,改めて,コマンドのおさらい.
よく使いそうなものをいくつか.

|コマンド|操作内容|
|-|-|
|Ctrl+X Ctrl+S|ファイル変更の保存|
|Ctrl+X Ctrl+C|emacsの終了|
|Ctrl+S|文字列の検索|
|Ctrl+K|カーソル位置から後ろを切り取り|
|Ctrl+Y|切り取ったものを貼り付け|

# Pythonのプログラムを書いてみよう

test.pyというファイルを作成し下記のプログラムを書いてみある.

“`test.py
#!/usr/bin/python3
# -*- coding : utf-8 -*-

print(“Hell

元記事を表示

Pythonを用いて簡易的な計算機を作った話

# この記事の目的
プログラムを勉強する中で、ゼロからアルゴリズムを考える機会が少なかったので、アルゴリズムを考えコードを書く練習として簡易的な計算機をpythonで作っていく。

# 今回作る計算機の仕様
入力される文字列は以下のルールに従う。
* 使用できる文字は整数、括弧、演算子(+,-,*,/,%,^)、スペースである
* 文字は半角を受け付ける
* 数字と数字の間にスペースがある場合は1つの数字として扱う(例:12 34→1234)
* 単項マイナス演算子は必ず括弧で囲む(例:-2→(-2))
* 括弧を用いる際の乗算の省略は不可(例:3(4+5)→3*(4+5))
# 設計
### 計算までの流れ
処理の流れは大きく分けて
1. 文字列から配列に変換する
1. 配列を逆ポーランド記法の並びに変換する
1. 変換した配列とスタックとポップを用いて計算を行う

の三つのパートからなる。

続いて上記の処理の流れをどのように実装していくかを考えていく。
### 1.文字列から配列へ変換する
今回入力される文字は、数字・演算子・括弧のみなので、以下のようなルールで配列に要素を格納し

元記事を表示

じゃんけん.py

# 乱数でじゃんけんに勝つ

#### 相手の傾向から次の勝利を予想する。

“`python:main.py
import random
gu = 0
choki = 0
pa = 0
num = 0
gu_p = 1
choki_p = 1
pa_p = 1
up_p = 0.1
dict = [‘gu’,’cho’,’pa’]
while True :
if num != 0:
res = input(“勝or負(w / l) : “)
if res == ‘w’ or res == ‘l’:
pass
else:
res = random.choice([‘w’,’l’])
if gu == 1:
gu = 0
if res == ‘w’:
gu_p += up_p
else:
if gu_p > up_p * 1.1:

元記事を表示

日本語データセットで10+ヶ国語を発話するTTS開発

韓国で開発をしている大学生です。初めて記事お作成してみます。

# 目次

0. 概要
0. 亜流雀々
0. 本プロジェクトの開発過程
0. 結果

# 概要

Japanese to Multi Language TTS – VITS (MB-iSTFT-VITS)

まず、このプロジェクトは日本語データセットで韓国語を発話できるようにするために始めたプロジェクトです。

その後、HANGULIZEプロジェクトを発見し、ミュートクリーナーにハングルのサイズを追加して10+ヶ国語を発火させることができるようになりました。 外国語を流暢に話す日本人だと感じたら、このプロジェクトは成功だと言えます。

# 亜流雀々

以下は、このプロジェクトに到達するために制作した亜流作です。

– RVC-VITS (https://github.com/kdrkdrkdr/RVC-VITS)
特徴:RVCでデータaugmentation後に学習する
>変換されたデータセットのイントネーションとキャラクターだけの特徴が生かされないイシューが発生

– JK-VITS

元記事を表示

【React】React+Pythonでマイクロサービスの依存関係を可視化してみた

# やりたいこと
私の会社ではマイクロサービスアーキテクチャを採用している。
そこでサービス同士の複雑な依存関係を可視化してみたい。
※企業秘密の観点からサービス名はハッシュ値に置換してある。
![service.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377231/76e93a67-d134-0170-96cf-721ce1eb0715.gif)

# 要件
– 閲覧したいサービスの依存関係を矢印の向きとノードの色、線の種類(点線は切れても致命的ではない関係性)で表現したい。
– サービスを検索できるようにしたい。
– ノードがクリックされたらそのノードのサービスにまつわる依存関係を表示させたい。

# システム
![スクリーンショット 2023-11-26 21.34.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377231/5bb96a14-8f7a-6f39-8ac1-a849bb040c1c.p

元記事を表示

文字の検索 Python3編

https://paiza.jp/works/mondai/string_primer/basic_step6
>文字列 S と文字 c が与えられるので、 c は S の何文字目に現れるかを調べてください。

何もみないで書いたやつ
“`py
S = input()
c = input()
order = 1
for i in S:
if i == c:
print(order)
break
else:
order += 1
“`

答えは`enumerate()`という関数を用いていました
これを用いると、配列の要素だけでなくインデックスも同時に取得可能
下記の様に書きます i, eleは変数名で変更可能。

“`PY
s = input()
c = input()

for i, ele in enumerate(s):
if ele == c:
print(i + 1)

“`

元記事を表示

全加算器 Python3編

https://paiza.jp/works/mondai/logical_operation/logical_operation__basic_step9

繰り上がりのある問題。
まあ、ヒントがあったのでその通りに答えたら正解だった。

“`py
a, b,C_1= map(int, input().split())

s_y = a ^ b
c_x = a & b

s = s_y ^ C_1
c_y = s_y & C_1

c_2 = c_x | c_y

print(c_2, s)
“`

さて。
なんでこう考えたら正解になるのか。

“`
(C_1:繰り上がり)
A_2 A_1
+ B_2 B_1
============
C_2 S_2 S_1
“`

ちなみに半加算器はこれ

“`
(C_1:繰り上がり)
A_1
+   B_1
============
C_1 S_1
“`
まず普通の計算と同じように考えると混乱する。

今やっているのは、1桁の計算ではなく、その次の桁の計算。

元記事を表示

半加算器 Python3編

https://paiza.jp/works/mondai/logical_operation/logical_operation__basic_step8

A + Bを2進数で計算した結果を出力するという問題。
2進法は0と1で表されるので今回のような論理演算にはよく使われる、と習った。

で、今それをやっている。
ちなみに、私は数学嫌いだった。(いわゆる文系プログラマ)
まあ、やらないわけにはいかないので。

とにかく。場合分けだな。

“`
A
B
=======
C S
“`
Cについて考えると
A=0 と B= 0 なら、0で繰り上がらないので0
A=1 と B= 0 なら、1で繰り上がらないので0
A=0 と B= 1 なら、1で繰り上がらないので0
A=1 と B= 1 なら、1で繰り上がるので1
この結果は ANDのときと同じなので、
C = A and B という関係になっていることがわかる。

Sについて考えると
A=0 と B= 0 なら、0
A=1 と B= 0 なら、1
A=0 と B= 1 なら、1
A=1

元記事を表示

functools使い方 cmp_to_key (abc 308C)

atcoder abc308 Cでcmp_to_keyを使った解法があったため、使い方をまとめる。
“from functools import cmp_to_key“ を使用することで、Python のソート
関数(sorted やsortなど)でカスタム比較関数を使うことができる。

“cmp_to_key“:2つの要素を比較する比較関数(cmp 関数)を受け取り、それを key 関数に変換することができる。比較関数は、2つの引数を取り、それらを比較して “-1“,“0“,“1“ を返す必要がある。

“`py:基本的な使い方
from functools import cmp_to_key

# 比較関数
def compare_items(a, b):
if a > b:
return 1
elif a < b: return -1 else: return 0 # ソートしたいリスト my_list = [3, 1, 4, 1, 5, 9, 2, 6] # カスタム比較関数を使っ

元記事を表示

OTHERカテゴリの最新記事