【レベル2】フィボナッチ数列を羅列させる

練習問題

フィボナッチ数列をリスト化するプログラムを書きなさい。

問題を解くのに必要な知識

  • while
  • append()
  • 解説

    フィボナッチ数列自体を表現することは難しくありません。
    まず、def関数で定義を行い結果を出すリストを作成します。
    def関数は特別使う必要はありませんが、nを様々な数字で検証したいときに便利です。
    def fib(n):
         result = []
    

    次に、初項と第二項を指定してあげます。でないと、An+1=An+An-1が成り立ちません。
    a=0
    b=1
    あとは、while文で条件を整えます。ここが一番頭を使うところです。

    while b < n:        #nで指定した数字まで以下を繰り返す
        result.append(b) #bをリストに加える
        a, b = b, a+b    #a=b,b=a+bと同義
    return result        #リストを返します
    

    これで、フィボナッチ数列は完成です。

    解答

    def fib(n):
        result = []
        a, b = 0, 1
        while b < n: 
            result.append(b)
            a, b = b, a+b
        return result
    

    fib(100)
    とすれば、
    [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    が返ってきます。

    【レベル2】数当てゲーム

    練習問題

    0から100までの数字をランダムに取得し、数を当てるゲームを作りなさい

    問題を解くのに必要な知識

  • random
  • input()
  • if
  • 解説

    まずは乱数を得るためのrandomモジュールをインポートします。
    import random

    次に、0から100までの数をランダムで1つ出します。

    num=random.randint(0,100)

    次に、数の予想を入力させます。当たるまで繰り返す文を書くところがポイント。

    while True:
        print("数を当てなさい")
        guess=input()
        i=int(guess)

    ここまでで、数を入力させました。
    あとは、入力された数が当たっているかどうかのif 文でおkですね。

        if i == num:
            print("正解")
            break
        elif i > num:
            print("もっと小さく")
        elif i < num:
            print("もっと大きく")
    

    これでゲームが完成です。

    解答

    import random 
    num=random.randint(0,100)
    while True:
        print("数を当てなさい")
        guess=input()
        i=int(guess)
        if i == num:
            print("正解")
            break
        elif i > num:
            print("もっと小さく")
        elif i < num:
            print("もっと大きく")

    【レベル2】メモを素早く作成するプログラム

    練習問題

    適当なディレクトリにメモを素早く作成するプログラムを書きなさい。
    また、endと入力するまで改行でメモが取れるようにしなさい。

    問題を解くのに必要な知識

  • open()
  • while
  • input()
  • 解説

    まず、open() 関数を用いてファイルを作成します。もともとのファイルがない場合は新規に作成されるので、心配いりません。
    file=open('test.txt','w',encoding='utf-8')

    次に、endと打つまで入力させます。ここがポイント。

    while True:
    	s=input() 
    	if s=='end': #endと打つまで入力繰り返す
    		break
    	file.write('%s\n' % s)

    最後に、ファイルを閉じます。

    file.close()

    無事閉じたら、「書き込み完了」なんかをプロントさせると安心です。

    print('書き込み完了')

    解答

    file=open('test.txt','w',encoding='utf-8')
    while True:
    	s=input() 
    	if s=='end': #endと打つまで入力繰り返す
    		break
    	file.write('%s\n' % s)
    file.close()
    print('書き込み完了')
    

    【レベル2】コピーファイルを作成する

    練習問題

    同じ内容で書かれたファイルを10個作成するプログラムを書きなさい

    問題を解くのに必要な知識

    解答

    for x in range(10):
        content='''
        これは%s番目のファイルです。
        ちゃんと入力できているか確かめましょう。
        ''' % str(x+1) #何番目、はオマケです
        write_file=open('/test%s.txt' % x,"w")
        write_file.write(content)
        write_file.close()
        print(open('/test%s.txt' % x).read())
    

    【レベル2】数字を入力させ、最大値、最小値を表示する

    練習問題

    5つの数字を入力させ、その数字のリストの中から最大値、最小値を割り出すプログラムを書きなさい。

    問題を解くために必要な知識

  • list() 関数
  • input() 関数
  • append() 関数
  • float() 関数
  • max() 関数
  • min() 関数
  • 解説

    まずはからのリストを作ります。

    numbers=[]
    

    次に、5回数字を入力させます。

    for i in range(5):
        x=input('適当な数字を入力(あと%s回):' % str(5-i))
    

    (あと何回)の部分はオマケです。

    入力させた値を、numbersリストに加えます。数字が実数になるようにちゃんとfloat() を使いましょう。

    for i in range(5):
        x=input('適当な数字を入力(あと%s回):' % str(5-i))
        numbers.append(float(x))
    

    あとは、最大値、最小値を出力させるだけです。

    max(numbers),min(numbers)
    

    解答

    numbers=[]
    for i in range(5):
        x=input('適当な数字を入力(あと%s回):' % str(5-i))
        numbers.append(float(x))
    max(numbers),min(numbers)