Pythonを学ぶ その2

リストの操作

リストには違う型のデータが入る

c = [1,"2",False]

要素の指定は、

リスト名[要素の番号] (番号は0から数えることに注意)

リストにデータを加える

末尾への追加append()

c.append(4)

途中に追加 c.insert(x,y) #リストcに対してx番目にyを追加する

削除 c.remove(x)

リスト長の取得 len(c)

配列との比較

配列:メモリ上に要素を連番で格納する リスト:バラバラに用意された要素を順序付ける

ので、配列は要素の間にデータを追加することができない また、配列は配列の長さを変えられない

演習

1.文字列' hello 'から前後の空白をすべて取り除く ' hello '.strip()

ちょっといじってたらstrip()で取り除いてくれない場合があることに気がついた

>>> a= 'sdfafoirewkkkkkppppp'
>>> a.strip('s')
'dfafoirewkkkkkppppp'
>>> a.strip('d')
'sdfafoirewkkkkkppppp'
>>> a.strip('ppp')
'sdfafoirewkkkkk'
>>> a.strip('kk')
'sdfafoirewkkkkkppppp'

strip()は前後の文字しか消してくれないっぽい

string.strip(s[, chars])(原文) 文字列の先頭と末尾から文字を取り除いたコピーを生成して返します。 chars を指定しない場合や None にした場合、先頭と末尾の空白を取り除きます。 chars を None 以外に指定する場合、 chars は文字列でなければなりません。

バージョン 2.2.3 で変更: chars パラメタを追加しました。初期の 2.2 バージョンでは、 chars パラメータを渡せませんでした。 公式ドキュメントより

条件分岐

if(cond A):
    -----
elif(cond B):#条件AがFalseで条件BがTrueのとき
    -----
elif(cond C):#条件A、BがともにFalseのとき
    -----
else:#すべての条件がFalseのとき
    -----

インデントでコードブロックを作る。

x = -3

if(x>0):
    print('+')
elif(x==0):
    print('0')
else:
    print('-')
コードブロック

ifなどの制御構造がどの処理をカバーしているかを示すための表現 Cだと{}で表現していて、プログラムとしてインデントする必要はなかった

処理1
if(A):
    処理2
    処理3
else:
    処理4
処理5

処理5はelseの制御下にはない!

コードブロックの入れ子(ネスト)もできるよ

ループ処理
for

グループにある要素すべてを処理する

集合の一つを取り出してiに格納し、それを処理する

a = [1,2,3,4]
for i in a:
    print(i)

俺の知ってるforと違う! ポイントは集合から取り出してiに格納するってとこ。 iを1-5まで動かしてa[i]をなんとか。。。。っていう形とは違うね

while

ループを何周すればいいかわからない処理

二進数の桁数を求めるプログラム

x =23
i=1
while(2**i<x):
    i += 1
print(i)
break, continue
y = [1,3,5,5,7,9,10,13,15]
has_even = False
for i in y:
    print(i)
    if(i%2 == 0):
        has_even = True
        break
print("y has even:" + str(has_even))

試しに

y = [1,3,5,5,7,9,10,13,15]
has_even = False
for i in y:
    print(i)
    if(i%2 == 0):
        has_even = True
    break
print("y has even:" + str(has_even))

とやってみたら、ちゃんと 1 で止まった。コードブロックすごい

continueは特定の条件の時のみ処理するときに使う

演習1

[[1,5,3],[2,6,4]]はリストにリストが入っています。内側のリストの最大値をそれぞれ求めるプログラムを書いてください

z = [[1,5,3],[2,6,4]]
for i in z:
    print(max(i))

リストの最大値を求める関数を使ってみたけど、使わなかったとしたら

for i in z:
    maximum = i[0]
    for j in i:
        if(j > maximum):
            maximum = j
    print(maximum)

リストの中のリストの要素を指定するには list[外側の要素番号][内側の要素番号] z[1][2]は3

演習2

1から100までの整数で - 3の倍数の時はFizz - 5の倍数の時はBuzz - 3の倍数でもあり5の倍数でもある時はFizzBuzz と表示するプログラムを書いてください

for i in range(1,100):
    if (i%3 == 0 and i%5== 0):
        print('FizzBuzz')
    elif(i%3 == 0):
        print('Fizz')
    elif(i%5 == 0):
        print('Buzz')
    else:
        print(i)

今日はここまで