新年から頭を動かそう(^^)Python問題集


## はじめに

HI Engineer Collegeでは、実務未経験のエンジニアの方や、エンジニアに興味がある方を募集したおります、まずはお気軽にお問い合わせください。

※ (株)G&T（【内々定まで最短2週間】ゼロからしっかりじっくり研修☆20代活躍中！）

https://gat-company.com/

※ HI Engineer Collegeに興味あがある方はこちら（プログラミングを学習したい方）

https://hiengineer.jp/



---

### エンジニア向けチャットルーム「TechTalk」参加者募集中！

プログラミングやITの話題を気軽に共有し、学び合えるエンジニアのためのチャットルーム「TechTalk」では、新たな参加者を募集中です！

**こんな方にオススメです**
- 最新技術の動向やトレンドを追いかけたい
- 日々の開発で生じる疑問を他のエンジニアに相談したい
- コードレビューの方法やデバッグのコツを知りたい
- 他のエンジニアと共に成長できる場を探している

**チャットルームで扱う主なトピック**
- **プログラミング**: JavaScript、Python、Javaなど、言語やフレームワークについて
- **開発ツール**: Git、Docker、CI/CD の自動化など
- **キャリア**: 転職やキャリアパス、業界動向
- **AI/機械学習**: モデルの開発やトレンド
- **Webセキュリティ**: セキュリティ対策や最新の脅威情報

**チャットルームの特徴**
- 他のエンジニアからリアルタイムでフィードバックがもらえます
- 勉強会やハンズオンセッションも定期開催
- 初心者から上級者まで、幅広いレベルのエンジニアが在籍
- リモートワーク時のちょっとした相談や雑談も大歓迎

**参加方法**
下記リンクから「TechTalk」へぜひご参加ください。

https://line.me/ti/g2/xRolADFbfopNo4vdgA9hmAlAlMgxvaIUSNDx8A?utm_source=invitation&utm_medium=link_copy&utm_campaign=default

---
---

### ゲームのルール
1. プログラムが1から100の間でランダムな数字を選びます。
2. ユーザーはその数字を当てるまで繰り返し入力します。
3. ユーザーが入力した数字が正解よりも大きいか小さいかをヒントとして表示します。
4. ユーザーが正解すれば、ゲームが終了します。

---

---

### 問題 1: 辞書を使用したプログラムの作成

#### ステップ 1: 辞書の作成と操作
1. 以下のデータを持つ**辞書**を作成してください：
   - "りんご": 100円
   - "みかん": 80円
   - "バナナ": 120円
   - "いちご": 300円
2. ユーザーにフルーツ名を入力してもらい、そのフルーツの価格を表示してください。
3. 辞書に存在しないフルーツが入力された場合、「[フルーツ名] はリストにありません」と表示してください。
4. 繰り返し処理を使って、ユーザーが「終了」と入力するまで、フルーツの価格を確認できるようにしてください。

---

### 問題 2: 集合を使用したプログラムの作成

#### ステップ 1: 集合の作成と操作
1. 以下のデータを持つ**集合（セット）**を作成してください：  
   `{"りんご", "みかん", "バナナ", "いちご", "ぶどう"}`
2. ユーザーにフルーツ名を入力してもらい、そのフルーツが集合に存在するかどうかを確認し、存在すれば「[フルーツ名] はセットにあります」、存在しなければ「[フルーツ名] はセットにありません」と表示してください。
3. ユーザーがフルーツを入力するたびに、入力されたフルーツを**集合**に追加してください。
4. ユーザーが「終了」と入力するまで、フルーツをセットに追加し続けるプログラムを作成してください。
5. 最後に、集合内の全てのフルーツを表示してください。

---

### 解答例

#### 問題 1: 辞書を使用したプログラムの解答例

```python
# ステップ 1: 辞書の作成
fruit_prices = {
    "りんご": 100,
    "みかん": 80,
    "バナナ": 120,
    "いちご": 300
}

# フルーツ価格の確認プログラム
while True:
    # ユーザーにフルーツ名を入力してもらう
    fruit = input("価格を確認したいフルーツを入力してください（または「終了」と入力して終了）: ")

    # "終了" と入力されたらループを終了する
    if fruit == "終了":
        print("プログラムを終了します。")
        break

    # フルーツが辞書にあるか確認し、価格を表示
    if fruit in fruit_prices:
        print(f"{fruit} の価格は {fruit_prices[fruit]} 円です。")
    else:
        print(f"{fruit} はリストにありません。")
```

#### 出力例

```
価格を確認したいフルーツを入力してください（または「終了」と入力して終了）: りんご
りんご の価格は 100 円です。
価格を確認したいフルーツを入力してください（または「終了」と入力して終了）: パイナップル
パイナップル はリストにありません。
価格を確認したいフルーツを入力してください（または「終了」と入力して終了）: 終了
プログラムを終了します。
```

---

#### 問題 2: 集合を使用したプログラムの解答例

```python
# ステップ 1: 集合の作成
fruit_set = {"りんご", "みかん", "バナナ", "いちご", "ぶどう"}

# フルーツ確認と追加プログラム
while True:
    # ユーザーにフルーツ名を入力してもらう
    fruit = input("セットに追加したいフルーツを入力してください（または「終了」と入力して終了）: ")

    # "終了" と入力されたらループを終了する
    if fruit == "終了":
        print("プログラムを終了します。")
        break

    # フルーツが集合にあるかどうかを確認
    if fruit in fruit_set:
        print(f"{fruit} はセットにあります。")
    else:
        print(f"{fruit} はセットにありません。新しくセットに追加します。")
        fruit_set.add(fruit)

# 集合内の全てのフルーツを表示
print("現在のフルーツセット:")
for fruit in fruit_set:
    print(fruit)
```

#### 出力例

```
セットに追加したいフルーツを入力してください（または「終了」と入力して終了）: りんご
りんご はセットにあります。
セットに追加したいフルーツを入力してください（または「終了」と入力して終了）: パイナップル
パイナップル はセットにありません。新しくセットに追加します。
セットに追加したいフルーツを入力してください（または「終了」と入力して終了）: 終了
プログラムを終了します。
現在のフルーツセット:
りんご
みかん
バナナ
いちご
ぶどう
パイナップル
```

---

### 問題のポイント

- **辞書の操作**：辞書を使ってフルーツの価格を保存し、キーであるフルーツ名を使って価格を取得する方法を学びます。
- **集合の操作**：集合を使って、入力されたフルーツを追加し、重複が自動的に排除される特徴を理解します。
- **条件分岐**：`if` 文を使って、フルーツが辞書や集合に含まれているかどうかを確認します。
- **繰り返し処理**：`while` ループを使って、ユーザーが「終了」と入力するまで、入力を繰り返し受け付けます。

---