iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0

今天要來練習的是必較難的題目,是出自於APCS 105年3月5日的實作題1,那我們就開始吧!

題目

https://ithelp.ithome.com.tw/upload/images/20210925/20140468oDJLqM6hQ3.png
https://ithelp.ithome.com.tw/upload/images/20210925/201404687drqCBRPNy.png
問題描述
一次考試中,於所有及格學生中獲取最低分數者最為幸運,反之,於所有不及格同學 中,獲取最高分數者,可以說是最為不幸,而此二種分數,可以視為成績指標。 請你設計一支程式,讀入全班成績(人數不固定),請對所有分數進行排序,並分別找 出不及格中最高分數,以及及格中最低分數。當找不到最低及格分數,表示對於本次考試而言,這是一個不幸之班級,此時請你印 出:「worst case」;反之,當找不到最高不及格分數時,請你印出「best case」。
註:假設及格分數為 60,每筆測資皆為 0~100 間整數,且筆數未定。

輸入格式
第一行輸入學生人數,第二行為各學生分數(0~100 間),分數與分數之間以一個空白 間格。每一筆測資的學生人數為 1~20 的整數。

輸出格式
每筆測資輸出三行。
第一行由小而大印出所有成績,兩數字之間以一個空白間格,最後一個數字後無空白;
第二行印出最高不及格分數,如果全數及格時,於此行印出 best case;
第三行印出最低及格分數,當全數不及格時,於此行印出 worst case。

解答

https://ithelp.ithome.com.tw/upload/images/20210925/20140468QxEqwmpUEK.png

a=int(input())      #輸入人數
b=input()           #輸入成績
list=b.split()      #將成績轉為清單
list.sort()         #將清單中成績排序(由小到大)

#以下為第一行=======================================
print(' '.join(list))   #將排序好的清單轉為字串並打印

#以下為第二行=======================================
list.reverse()              #將清單順序反轉(由大到小)

for i in range(0,a):        
    if int(list[i])<60:     #如果找到第一個小於60的數,打印並break
        print(list[i])
        break
if int(list[a-1])>=60:      #如果清單中最小數>=60,就代表所有人及格
    print('best case')

#以下為第三行=======================================
list.reverse()              #將清單順序反轉(由小到大)

for j in range(0,a):        
    if int(list[j])>=60:    #如果找到第一個大於60的數,打印並break
        print(list[j])
        break
if int(list[a-1])<60:       #如果清單中最大數<60,就代表所有人都不及格
    print('worst case')


上一篇
Python 練習
下一篇
Python 練習
系列文
一起來探索Python語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言