プレゼント懸賞の抽選

あるプレゼント懸賞の募集を行ったところ,100名の応募があった。 このプレゼント懸賞の当選者は5人である。 表1は,その応募者の応募番号,住所,氏名,年齢の一部を示している。

表1 応募者の住所,氏名,年齢

この応募者(応募番号1〜100)の中から乱数を用いて5人を選び出し, 当選者5人の住所,氏名,年齢を出力するプログラムを作成しなさい。



解答例

winners.py

import random

N = 100	#応募者数
n = 5	#当選者数

address = []
name = []
age = []

labels = input()
i = 0
while (ア):
	line = input()
	ls = line.split('\t')
	address.append(ls[1])
	name.append(ls[2])
	age.append(ls[3])
	i = i + 1

i = 0
while (イ):
	winner = random.randint(1, 100)
	print(address[winner-1], name[winner-1], age[winner-1])
	i = i + 1
H:\Documents\prg1\08> python winners.py < applicants.txt↵
市川市妙典2丁目 河野 昴 20
市川市中国分4丁目 吉原 龍之介  30
市川市塩焼5丁目 越沼 裕 29
市川市鬼高1丁目 小林 彩 17
市川市大洲4丁目 森田 貴幸 10


プログラムの書き換え問題

上のプログラムを実行すると,次のように同一人物が2回出力されてしまうこともあり得る。 このようなことがないように上のプログラムを改良しなさい。

H:\Documents\prg1\08> python winners.py < applicants.txt↵
市川市市川2丁目 市川 久美 27
市川市田尻4丁目 池嶋 真一 29
市川市鬼高2丁目 伊澤 祐太 43
市川市鬼高2丁目 伊澤 祐太 43
市川市行徳駅前3丁目 大金 義明 50