ゆるゆるチャレンジ

興味のあることをゆるゆる共有します〜

【python 勉強】progateの次に学ぶ python演習問題100問パック

はやたすさんの「progateの次に学ぶ python演習問題100問パック」を解きはじめました。

めんどくさいので、できるところまでは「Google Colaboratory」でやるつもり。
実際に解いてみて、瞬時に出てこない問題はしっかり復習します。

1-10

1回目:2021/06/17

input()

これは全然使わないからこれを機に習得する。
www.python.jp

pythonのf文字列

f文字列ってC言語でprintする時に似てる。使ったことなくて違うやり方で書いたけど、こっちの方が楽そう。
note.nkmk.me

in演算子

in演算子、よく使ってたけど忘れていた。。悲しい
note.nkmk.me



11-20

1回目:2021/06/22

ほとんど回答とは違う方法で解いていた。
例えば
問題14はinputで取得した段階でint型にして、
num_ = 2*num + num*10 + num*100

問題15は差の絶対値をとる(abs())
など。いろんなやり方があって面白いですね。

pythonのf文字列

前も出てきたけどまだ使い慣れていない。
print(f'BMI = {bmi}')

二乗の計算

h ** 2
少ない方がミスが減るので、こっちの表記を使う

文字の繰り返し

a*3
aはstr型、で、aを3回繰り返す。

ifを使った対応

r = -r if r < 0 else r

辞書型のキー取得

d.keys()

各要素の個数(要素ごとの出現回数)をカウント: count()メソッド

s.count(i)
note.nkmk.me

すべての文字を大文字に変換(upperメソッド)

str.upper()
www.javadrive.jp

文字列を指定して置換: replace

s.replace(i, '')
note.nkmk.me




21-30

1回目:2021/06/23

すべての文字が小文字かどうかを判定する(islowerメソッド)

例:
print("apple".islower())
>> True

print("Hello".islower())
>> False
www.javadrive.jp

すべての文字が大文字かどうかを判定する(isupperメソッド)

print("APPLE".isupper())
>> True

print("Hello".isupper())
>> False
www.javadrive.jp

任意の文字列を含むか判定: in演算子

含まれているとTrue、含まれていないとFalseを返す。

例:
'Sam' in 'I am Sam'
# True
note.nkmk.me

重複した要素を削除し、新たなリストを生成

元のリストの順序を保持しない: set()

list(set(l))
note.nkmk.me

区切り文字で分割: split


s_blank = 'one two three\nfour\tfive'
s_blank.split()
# ['one', 'two', 'three', 'four', 'five']
note.nkmk.me

文字列のリスト(配列)を連結・結合: join()

'間に挿入する文字列'.join([連結したい文字列のリスト])

例:
s = ','.join(l)
print(s)
# aaa,bbb,ccc
note.nkmk.me

リスト(配列)の組み込み関数

mylist = list(range(1, 11))

# 合計
sum(mylist)

# 最小
min(mylist)

# 最大
max(mylist)

# リストの長さ
len(mylist)
techacademy.jp





31-40

1回目:2021/06/24

組み込み関数を引数keyに指定

l = ['Python', 'Ruby', 'PHP', 'JavaScript']
sorted_l = sorted(l, key=len)

note.nkmk.me

複数のリストから共通する要素とその個数を取得

l1_l2_and = set(l1) & set(l2)
print(l1_l2_and)
# {'c', 'b'}

print(type(l1_l2_and))
#
note.nkmk.me

偶数番目の要素を取得する

>>> print(num_array[0::2])
[0, 2, 4]
www.kabegiwablog.com

isinstance

例:
print(isinstance(1, int))
>> True
print(isinstance(1, str))
>> False
print(isinstance("abc", str))
>> True
print(isinstance("abc", int))
>> False
www.javadrive.jp

2次元のリストを平坦化(sum()使用)

print(sum(l_2d, []))
# [0, 1, 2, 3]
note.nkmk.me

空リストの判定

if not a:
qiita.com

i 番目の要素同士をかけあわせる

li1 = [1, 3, 5]
li2 = [2, 4, 6]

◆zip() と内包表記:
combined1 = [x * y for (x, y) in zip(li1, li2)]
# => [2, 12, 30]

◆map():
from operator import mul

combined2 = map(mul, li1, li2)
# => [2, 12, 30]
www.lifewithpython.com

zip関数

例:
names = ['Alice', 'Bob', 'Charlie']
ages = [24, 50, 18]

for name, age in zip(names, ages):
print(name, age)
# Alice 24
# Bob 50
# Charlie 18
note.nkmk.me

Pythonリスト内包表記

squares = [i**2 for i in range(5)]
print(squares)
# [0, 1, 4, 9, 16]

◆forでの表記
squares = []
for i in range(5):
squares.append(i**2)

print(squares)
# [0, 1, 4, 9, 16]
note.nkmk.me

41-50

1回目:2021/06/25

リストに重複があるか判定

note.nkmk.me

リストのソート

◆リスト型のメソッドsort(): 元のリストをソート
例:
org_list = [3, 1, 4, 5, 2]

org_list.sort()
print(org_list)
# [1, 2, 3, 4, 5]
◆組み込み関数sorted(): ソートした新たなリストを生成
例:
org_list = [3, 1, 4, 5, 2]

new_list = sorted(org_list)
print(org_list)
print(new_list)
# [3, 1, 4, 5, 2]
# [1, 2, 3, 4, 5]
note.nkmk.me

isinstance

例:
print(isinstance(1, int))
>> True
print(isinstance(1, str))
>> False
print(isinstance("abc", str))
>> True
print(isinstance("abc", int))
>> False
www.javadrive.jp

いずれかの要素がTrueか判定: any()

print(any([True, False, False]))
# True

print(any([False, False, False]))
# False
note.nkmk.me

range(0, 10, 2)

range(0, 10, 2)

    • > 0 2 4 6 8

www.javadrive.jp

指定位置に要素を追加(挿入): insert()

例:
l = list(range(3))
print(l)
# [0, 1, 2]

l.insert(0, 100)
print(l)
# [100, 0, 1, 2]

l.insert(-1, 200)
print(l)
# [100, 0, 1, 200, 2]
note.nkmk.me

Pythonでリスト(配列)の要素を削除するclear, pop, remove, del

note.nkmk.me

Pythonで文字列の一部を削除(stripなど)

note.nkmk.me

前方一致・後方一致(先頭・末尾): startswith(), endswith()

例:
s = 'aaa-bbb-ccc'

print(s.startswith('aaa'))
# True

print(s.startswith('bbb'))
# Fals
https://note.nkmk.me/python-str-compare/

文字列の検索(find)

www.sejuku.net

51-60

1回目:

.pro

61-70

1回目:

年収訴求

71-80

1回目:

81-90

1回目:

91-100

1回目: