2016-11-21 29 views
0

我正在研究一個Lab程序,該程序要求創建一個程序,要求打印輸入的分數(以逗號分隔),並在每次列出分數時都添加一個星號。我列出的程序很短,看起來應該起作用,但如果我將這個問題變得比實際簡單,我就會遇到麻煩。任何人都可以幫助一些想法,爲什麼這不起作用,並在這裏做什麼的想法?直方圖程序

test_scores = input("Enter test scores: ").split(",") 

for num in range(0,101): 
    count = test_scores.count(num) 
    if count > 0: 
     print(num) 

完成的程序:

test_scores = input("Enter test scores: ").split(",") 

a_set = sorted(set(test_scores)) 
test_scores.sort() 

for score in a_set: 
    x = test_scores.count(score) 
    print(score,('*'*x)) 
+0

如果您只是試圖列出列表中的元素,爲什麼不只是迭代列表並打印出元素,您是什麼意思「添加星號...」?如果你想要* unique *元素,那麼你可以使用'set'。不知道我明白你想要達到的效果 – Pythonista

+0

編寫一個程序(稱爲Histogram.py),輸入一串逗號分隔的測試分數 ,並打印出分數的直方圖。對於每個不同的測試分數,柱狀圖上應該有一行 ,然後是該值的每個測試分數的一顆星。例如,如果文件中的測試分數爲55,80,80,95,95,95和98,則輸出到 屏幕應如下所示: 55 * 80 ** 95 *** 98 * 我相信包括實際描述會更好 –

回答

0

因爲這是一個任務,我不希望將代碼實驗室爲你我將概述你可以實現的方法。這是最簡單的方法(imo)給你的評論你說的直方圖,但列出的分數(星號=數量出場)...

如果你想要一個實際的直方圖放在操作系統與軸的分數垂直與「酒吧」這將是高度=號發生的星號,那麼將需要額外的工作。所以,我將概述您在評論中列出的內容。

  1. 你的第一行是罰款獲得分數的名單和他們分裂成一個列表(假設用戶輸入是罰款)

  2. 你遍歷1-100這是所有可能的分數。冗餘imo,爲什麼不直接對列表進行排序,然後用需要的星號數打印出數字?

提示:sort是方便在這裏,你可以在列表中做(例如)

for element in aSortedList: 
    #do something with "element" 
迭代並打印項目
  • 對於每一個進球,你想多個星號等於分數旁邊顯示的列表中出現的次數。
  • 對於字符串回憶,您可以對(string) * (num)執行一個字符串,該字符串會重複num次。

    提示:您可以在count列表中找到列表中出現的次數。然後使用(string) * (num)

    你走了。

    +0

    我添加了一個代碼的更新,迄今爲止已完成我所需要的。非常感謝你。 –

    +0

    你的權利,道歉沒有在一段時間使用Python。那麼,你最新的問題是......? – Pythonista

    +0

    分配完成。它只是展示成品。我應該補充一點。 –