تمرین برنامه‌نویسی: نظرسنجی ژانرهای مورد علاقه .


در یک نظرسنجی از افراد علاقه‌­مند به تماشای فیلم، درخواست شد تا 3 تا از ژانرهای مورد علاقه‌­ی خود را بنویسند. 6 ژانر مختلف برای انتخاب به آن­‌ها داده شده است که شامل:

Horror, Romance, Comedy, History , Adventure , Action

برنامه‎ای بنویسید که تعداد افراد را بگیرد سپس اسم هر فرد را با ژانرهای مورد علاقش بگیرد و اسم هر ژانر و تعداد افراد علاقه‌مند به آن ژانر را به ترتیب از بیشترین علاقه‌مندی در خروجی چاپ کند. ( در صورتی که میزان علاقه‌مندی در ژانرهای مختلف یکسان شد، به ترتیب الفبای انگلیسی در خروجی چاپ کنید.) در صورتی که ژانری انتخاب نشد، مقدار آن را صفر در نظر بگیرید و در خروجی اسم و عدد 0 را چاپ کنید.

4
hossein Horror Romance Comedy
mohsen Horror Action Comedy
mina Adventure Action History
sajjad Romance History Action
نمونه خروجی:

Action : 3
Comedy : 2
History : 2
Horror : 2
Romance : 2
Adventure : 1
توجه: چنانچه قصد دارید از دیکشنری در حل مسائل خود استفاده کنید، به این نکته توجه کنید که دیکشنری ترتیب را حفظ نمی‌کند.

پاسخ ها

sokanacademy forum
کاربر سکان آکادمی 3 سال پیش

base_genres = ['Action', 'Adventure', 'Comedy', 'History', 'Horror', 'Romance']
number_of_people = int(input())
data_list = list()

for i in range(number_of_people):
data_list.append(input().split())

numbers_list = dict()
for i in range(number_of_people):
for j in range(1, len(data_list[i])):
numbers_list[data_list[i][j]] = numbers_list.get(
data_list[i][j], 0) + 1

for i in range(len(base_genres)):
numbers_list[base_genres[i]] = numbers_list.get(base_genres[i], 0)

sorted_1st = list()
sorted_keys = list()
sorted_values = list()
for k, v in sorted(numbers_list.items(), key=lambda item: (item[1], item[0]), reverse=True):
sorted_1st.append({k: v})
sorted_keys.append(k)
sorted_values.append(v)
#print("%s : %s" % (k, v))

sorting = list(range(6))
n = len(sorted_1st)

for i in range(n):
for j in range(n-i-1):
if sorted_values[j] == sorted_values[j+1]:
if sorted_keys[j] > sorted_keys[j+1]:
sorted_values[j], sorted_values[j +
1] = sorted_values[j+1], sorted_values[j]
sorted_keys[j], sorted_keys[j +
1] = sorted_keys[j+1], sorted_keys[j]
sorting[j], sorting[j+1] = sorting[j+1], sorting[j]

for i in range(n):
print('%s : %i' % (sorted_keys[i], sorted_values[i]))

online-support-icon