見出し画像

プログラミング10本ノック【Python基礎文法】

今回のテーマ

前回の実践編。
「未来の時代に必須のスキル!AIを使いこなすプログラミングの学び方」

✅必要なもの

👉 Google Colaboratory
👉 ChatGPT

✅やること

👉 Python初学者向けプログラミング学習
👉 問題10問を用意
👉 ChatGPTを使いながら基本を学ぶ

今回は初学者向けにプログラミングの問題を10問用意しました。実際にChatGPTを使いながら問題を解いてみてください。

解答例は下についてます❗️

🦉 問題(全10問)

問題1: 変数の使い方

  1. 「Hello, World!」という文字列を表示するプログラムを作成してください。

  2. 2つの整数を入力して、その和を表示するプログラムを作成してください。

問題2: 条件分岐

  1. 2つの整数を入力して、それらの大小関係を表示するプログラムを作成してください。

  2. 3つの整数を入力して、最大値を表示するプログラムを作成してください。

問題3: 繰り返し

  1. 1から10までの整数を順に表示するプログラムを作成してください。

  2. 1から10までの整数のうち、偶数のみを表示するプログラムを作成してください。

問題4: 関数の定義

  1. 2つの整数を引数として受け取り、その和を返す関数を定義してください。

  2. 3つの整数を引数として受け取り、最大値を返す関数を定義してください。

問題5: リストの操作

  1. 5つの整数からなるリストを作成してください。

  2. 上記のリストから、偶数のみを含む新しいリストを作成してください。

問題6: 文字列操作

  1. 「Hello, World!」という文字列から、最初の5文字を取り出して表示するプログラムを作成してください。

  2. 「Hello, World!」という文字列から、最後の6文字を取り出して表示するプログラムを作成してください。

問題7: 辞書の操作

  1. 3つのキーと値からなる辞書を作成してください。

  2. 上記の辞書から、指定したキーに対応する値を取得して表示するプログラムを作成してください。

問題8: ファイル操作

  1. 「hello.txt」というファイルを作成し、そこに「Hello, World!」という文字列を書き込んでください。

  2. 上記のファイルから、文字列を読み取って表示するプログラムを作成してください。

問題9: モジュールの使用

  1. datetimeモジュールを使用して、現在時刻を表示するプログラムを作成してください。

  2. randomモジュールを使用して、1から10までのランダムな整数を生成するプログラムを作成してください。

問題10: クラスの定義

  1. 人を表すPersonクラスを定義してください。このクラスは、名前(name)、年齢(age)、性別(gender)の3つの属性を持ちます。

  2. 上記で定義したPersonクラスのインスタンスを作成し、名前、年齢、性別を表示するプログラムを作成してください。


🦉 解答例(全10問)

問題1-1: 「Hello, World!」という文字列を表示するプログラムを作成してください。

print("Hello, World!")

問題1-2: 2つの整数を入力して、その和を表示するプログラムを作成してください。

a = int(input("最初の整数を入力してください: "))
b = int(input("次の整数を入力してください: "))
print("2つの整数の和は", a + b, "です。")

以上のように、print()関数を使って文字列を表示することや、input()関数を使ってユーザーからの入力を受け取ることができます。また、int()関数を使って文字列を整数に変換することも必要です。

問題2-1: 2つの整数を入力して、それらの大小関係を表示するプログラムを作成してください。

a = int(input("最初の整数を入力してください: "))
b = int(input("次の整数を入力してください: "))

if a > b:
    print("最初の整数は次の整数より大きいです。")
elif a < b:
    print("次の整数は最初の整数より大きいです。")
else:
    print("最初の整数と次の整数は等しいです。")

問題2-2: 3つの整数を入力して、最大値を表示するプログラムを作成してください。

a = int(input("最初の整数を入力してください: "))
b = int(input("次の整数を入力してください: "))
c = int(input("最後の整数を入力してください: "))

if a > b:
    if a > c:
        print("最大値は", a, "です。")
    else:
        print("最大値は", c, "です。")
else:
    if b > c:
        print("最大値は", b, "です。")
    else:
        print("最大値は", c, "です。")

以上のように、if文を使って条件分岐をすることで、複数の条件に応じた処理を行うことができます。また、複数のif文をネストすることで、より複雑な条件分岐を実現することもできます。

問題3-1: 1から10までの整数を順に表示するプログラムを作成してください。

for i in range(1, 11):
    print(i)

問題3-2: 1から10までの整数のうち、偶数のみを表示するプログラムを作成してください。

for i in range(1, 11):
    if i % 2 == 0:
        print(i)

以上のように、for文を使って繰り返し処理を行うことができます。

range()関数を使って、指定した範囲の整数を順に生成することができます。また、if文を使って条件に応じた処理を行うことができます。i % 2 == 0という条件は、iを2で割った余りが0である場合、つまりiが偶数の場合にTrueとなります。

問題4-1: 2つの整数を引数として受け取り、その和を返す関数を定義してください。

def add_numbers(x, y):
    return x + y

この関数は、引数として受け取った2つの整数xとyの和を返します。return文を使って、関数の戻り値を指定しています。

問題4-2: 3つの整数を引数として受け取り、最大値を返す関数を定義してください。

def max_number(x, y, z):
    if x > y:
        if x > z:
            return x
        else:
            return z
    else:
        if y > z:
            return y
        else:
            return z

この関数は、引数として受け取った3つの整数x、y、zのうち、最大値を返します。if文を使って、3つの整数の大小関係を比較して、最大値を求めることができます。最大値を返すために、return文を使っています。

問題5-1: 5つの整数からなるリストを作成してください。

numbers = [1, 3, 5, 7, 9]

このリストは、1, 3, 5, 7, 9という5つの整数を要素として持ちます。

問題5-2: 上記のリストから、偶数のみを含む新しいリストを作成してください。

# 解答例1
even_numbers = []
for number in numbers:
  if number % 2 ==0:
    even_numbers.append(number)
print(even_numbers)

# 解答例2
even_numbers = [number for number in numbers if number % 2 == 0]
print(even_numbers)

このコードでは、リスト内包表記を使って、元のリストnumbersから偶数のみを含む新しいリストeven_numbersを作成しています。

リスト内包表記(解答例2)は、for文とif文を組み合わせたコンパクトな書き方です。上記のコードでは、numbersの各要素を変数numberに代入し、number % 2 == 0という条件がTrueの場合、新しいリストeven_numbersにnumberを追加することで、偶数のみを含む新しいリストを作成しています。

numbersには偶数は入ってないので、リストは空になります。

print(even_numbers) # [] (実行結果)

問題6-1: 「Hello, World!」という文字列から、最初の5文字を取り出して表示するプログラムを作成してください。

text = "Hello, World!"
result = text[:5]
print(result)

このコードでは、スライスを使って、文字列textから最初の5文字を取り出して、resultに代入しています。

スライスは、リストや文字列の一部分を取り出すために使われます。スライスの記法は、[開始位置:終了位置]です。

ここで、開始位置は取り出したい部分文字列の最初の文字のインデックス(0から始まる)であり、終了位置は取り出したい部分文字列の最後の文字のインデックスの次の位置です。

上記のコードでは、text[:5]と書くことで、textの最初から5文字目の直前までの部分文字列を取り出しています。

問題6-2: 「Hello, World!」という文字列から、最後の6文字を取り出して表示するプログラムを作成してください。

text = "Hello, World!"
result = text[-6:]
print(result)

このコードでも、スライスを使って、文字列textから最後の6文字を取り出して、resultに代入しています。

ここで、負の数のインデックスは、末尾からの文字の位置を表します。上記のコードでは、text[-6:]と書くことで、textの最後から6文字目の位置から末尾までの部分文字列を取り出しています。

問題7-1: 3つのキーと値からなる辞書を作成してください。

my_dict = {
    "apple": 100,
    "banana": 50,
    "orange": 80
}

このコードでは、3つのキーと値からなる辞書を作成して、変数my_dictに代入しています。

問題7-2: 上記の辞書から、指定したキーに対応する値を取得して表示するプログラムを作成してください。

my_dict = {
    "apple": 100,
    "banana": 50,
    "orange": 80
}
key = "apple"
value = my_dict[key]
print(value)

このコードでは、辞書my_dictから指定したキーに対応する値を取得して、valueに代入しています。辞書の要素にアクセスするためには、辞書名の後ろに[key]をつけて、対応する値を取得します。

最後に、print関数を使って、valueを表示しています。変数keyには、取得したいキーの名前を文字列として指定しています。

問題8-1: 「hello.txt」というファイルを作成し、そこに「Hello, World!」という文字列を書き込んでください。

with open("hello.txt", "w") as f:
    f.write("Hello, World!")

このコードでは、with文を使ってファイルを開き、"w"モードで書き込み用にオープンします。ファイル名として"hello.txt"を指定しています。

ファイルを開いた後は、f.writeメソッドを使って、ファイルに書き込みを行います。書き込みが終わったら、with文のブロックを抜けることで、自動的にファイルが閉じられます。

問題8-2: 上記のファイルから、文字列を読み取って表示するプログラムを作成してください。

with open("hello.txt", "r") as f:
    content = f.read()
    print(content)

このコードでは、with文を使ってファイルを開き、"r"モードで読み込み用にオープンします。ファイル名として"hello.txt"を指定しています。

ファイルを開いた後は、f.readメソッドを使って、ファイルの内容を文字列として読み込みます。読み込んだ文字列は、変数contentに代入されます。

最後に、print関数を使って、contentを表示しています。ファイルから読み込んだ文字列には、改行文字なども含まれている場合があるため、表示するときには注意が必要です。

問題9-1: datetimeモジュールを使用して、現在時刻を表示するプログラムを作成してください。

import datetime

now = datetime.datetime.now()
print("現在時刻は", now, "です。")

問題9-2: randomモジュールを使用して、1から10までのランダムな整数を生成するプログラムを作成してください。

import random

rand_int = random.randint(1, 10)
print("ランダムな整数は", rand_int, "です。")

random.randint(a, b)は、aからbまでのランダムな整数を生成する関数です。上記のコードでは、1から10までの整数をランダムに生成しています。

問題10-1: 人を表すPersonクラスを定義してください。このクラスは、名前(name)、年齢(age)、性別(gender)の3つの属性を持ちます。

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

上記の定義により、Personクラスが定義されました。このクラスは、3つの属性(name、age、gender)を持ちます。それぞれの属性は、init()メソッドで初期化されます。

init()メソッドは、クラスがインスタンス化された際に自動的に呼び出される特別なメソッドで、インスタンスを初期化するために使用されます。

上記の場合、init()メソッドには、name、age、genderという3つのパラメーターがあります。これらのパラメーターは、新しいPersonインスタンスを作成する際に渡されます。そして、それぞれのパラメーターの値が、Personインスタンスの対応する属性に割り当てられます。

例えば、次のようにして、新しいPersonインスタンスを作成することができます。

person1 = Person("Alice", 25, "female")

この場合、person1という名前の新しいPersonインスタンスを作成し、name属性には"Alice"、age属性には25、gender属性には"female"という値が割り当てられます。

問題10-2: 上記で定義したPersonクラスのインスタンスを作成し、名前、年齢、性別を表示するプログラムを作成してください。

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

person1 = Person("Alice", 25, "Female")
person2 = Person("Bob", 32, "Male")

print("Person1 - Name: {}, Age: {}, Gender: {}".format(person1.name, person1.age, person1.gender))
print("Person2 - Name: {}, Age: {}, Gender: {}".format(person2.name, person2.age, person2.gender))

上記のプログラムでは、Personクラスを定義して、それを使って2つのインスタンスを作成しています。その後、それぞれのインスタンスの属性である名前、年齢、性別を表示しています。実行すると、以下のような結果が得られます。

Person1 - Name: Alice, Age: 25, Gender: Female
Person2 - Name: Bob, Age: 32, Gender: Male

今回はこんな感じで、Pythonの基礎文法に関して問題文を作成してみました。Pythonを独学で学習することを考えてる方は是非頑張って挑戦してみてください。

また機会がありましたら、似たような記事を書いてみたいと思います。

この記事が気に入ったらサポートをしてみませんか?