へっぽこ研究者、立ち上がるってよ

あなたを応援するブログ

松尾研究室データサイエンティスト育成講座の練習問題、第一章の解答

第一章

練習問題1

ある文字列(Data Scienceなど)を変数として、それを1文字ずつ表示させるプログラムを書いてください。

moji = "Data Science"
for i in moji:
    print(i)

結果

D
a
t
a
 
S
c
i
e
n
c
e

練習問題2

1から50までの自然数の和を計算するプログラムを書いて、最後の計算結果を表示させるプログラムを書いてください。

#初期値の設定
total = 0
for wa in range(51):
    total = total + wa
print(total)

結果

1275

総合問題1

(1)10までの素数を表示させるプログラムを書いてください。なお、素数とは、1とそれ自身の数以外は約数をもたない正の整数のことをいいます。

#空リストの作成
sosu = []
for i in range (1,11):
 #1~3の素数をリストへ追加
    if i ==1 or i==2 or i ==3:
        sosu.append(i)
    else:
        #2で割って余りがゼロとなる偶数は飛ばす
        if i%2 == 0:
            continue
        else:
            handan = 1
            for p in range (3,i,2):
                #3以上の奇数で割ってあまりがゼロになるものをとばす
                handan = handan * (i%p)
                if handan ==0:
                    break
    #割り切れないものをリストへ追加
            if not(handan == 0):
                sosu.append(i)
print(sosu)

結果

[1, 2, 3, 5, 7]

総合問題2

(2)上記をさらに一般化して、Nを自然数として、Nまでの素数を表示する関数を書いてください。

#x~y-1までの自然数の中から素数を表示する関数
def sosulist(x,y):
    sosu =[]
    for shizen in range(x,y):
        if shizen==1 or shizen==2 or shizen == 3:
            sosu.append(shizen)
        else:
            if shizen%2==0:
                continue
            else:
                handan = 1
                for p in range (3,shizen,2):
                    handan = handan * (shizen%p)
                    if handan == 0:
                        break
                if not(handan == 0):
                    sosu.append(shizen)
    print(sosu)