質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2555閲覧

合格者を出力する方法

takeuchi0525

総合スコア21

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/06 06:44

受験者数は?:6[enter]
受験番号 1番: 44点
受験番号 2番: 3点
受験番号 3番: 85点
受験番号 4番: 54点
受験番号 5番: 24点
受験番号 6番: 77点

平均点:47.3点
最高点:85点
最低点:3点

合格者(60点以上):
受験番号 3番: 85点
受験番号 6番: 77点

このように出力するプログラムを作りたいのですが、60点以上の合格者を上記のように表示する方法がわかりません。リストの中から60点以上の点数を取り出すことはできるのですが、受験番号と連動させることができません。どのようにプログラムを書けばよいか教えてください。回答よろしくお願いいたします。下にあるのは僕ができるところまでやったプログラムです。Python3.7です。

num=int(input("受験者数は?:"))
from random import randint
score=[0]*num
for i in range(num):
score[i]=randint(0,100)
print(f"受験番号{i+1:>3}番:{score[i]:>3}点")
ave=sum(score)/len(score)
print(f"\n平均点:{ave:.1f}点")
print(f"最高点:{max(score)}点")
print(f"最低点:{min(score)}点")
print("\n合格者(60点以上) :")
point=[i for i in score if i>=60]
print(f"{point}点")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

辞書(candidates)に番号と点数を格納してみました。

python3

1num=int(input("受験者数は?:")) 2from random import randint 3score=[0]*num 4 5candidates = {} 6for i in range(num): 7 score[i]=randint(0,100) 8 print(f"受験番号{i+1:>3}番:{score[i]:>3}点") 9 candidates[i+1]=score[i] 10ave=sum(score)/len(score) 11print(f"\n平均点:{ave:.1f}点") 12print(f"最高点:{max(score)}点") 13print(f"最低点:{min(score)}点") 14print("\n合格者(60点以上) :") 15for i,s in candidates.items(): 16 if s >= 60: 17 print(f"受験番号{i+1:>3}番:{s:>3}点") 18""" 19受験番号 1番: 65点 20受験番号 2番: 47点 21受験番号 3番: 82点 22受験番号 4番: 72点 23受験番号 5番: 22点 24受験番号 6番: 74点 25 26平均点:60.3点 27最高点:82点 28最低点:22点 29 30合格者(60点以上) : 31受験番号 2番: 65点 32受験番号 4番: 82点 33受験番号 5番: 72点 34受験番号 7番: 74点 35"""

投稿2020/08/06 07:15

jeanbiego

総合スコア3966

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takeuchi0525

2020/08/06 07:23

回答ありがとうございました。
guest

0

ベストアンサー

辞書型 を活用しましょう:

python

1num=int(input("受験者数は?:")) 2from random import randint 3score = {} 4for i in range(num): 5 examinee_number = i + 1 6 examinee_score = randint(0, 100) 7 score[examinee_number] = examinee_score 8 print(f"受験番号{examinee_number:>3}番:{examinee_score:>3}点") 9ave=sum(score.values())/len(score) 10print(f"\n平均点:{ave:.1f}点") 11print(f"最高点:{max(score.values())}点") 12print(f"最低点:{min(score.values())}点") 13print("\n合格者(60点以上) :") 14points={number: score for number, score in score.items() if score >= 60} 15for number, score in points.items(): 16 print(f"受験番号{number:>3}番:{score:>3}点")

実行結果:

console

1$ python test.py 2受験者数は?:5 3受験番号 1番: 48点 4受験番号 2番: 9点 5受験番号 3番: 15点 6受験番号 4番: 81点 7受験番号 5番: 79点 8 9平均点:46.4点 10最高点:81点 11最低点:9点 12 13合格者(60点以上) : 14受験番号 4番: 81点 15受験番号 5番: 79点

参考: 5.5. 辞書型 (dictionary) | 5. データ構造 — Python 3.8.5 ドキュメント

投稿2020/08/06 07:12

編集2020/08/06 07:15
y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_shinoda

2020/08/06 07:16

既存の実装にバグが発生していたのでコードを修正しました
takeuchi0525

2020/08/06 07:23

回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問