2017-08-05 55 views
0

我甚至不知道從哪裏開始描述這個問題。試圖創建一個'眼科醫生考試'程序(或找到一個已經存在的程序)

我聽很多音樂,我發現當試圖對所有這些專輯進行「排名」時,除非您逐一列出並逐一比較它們(哪一個更好x或y)。有點像在驗光師那裏問你「哪一個看起來更好,一兩個?」

我試圖做的是要麼找到一個已經存在的程序或獲取代碼的程序,將:

一)讓你輸入項目的大名單
B)下井並且每次比較他們兩個,記錄每個選擇的回答
c)打印出最終'結果'列表,顯示哪一個通過編號列表中的選項排名最高。

我幾乎沒有經驗編碼,而且這個問題/請求對谷歌搜索來說太笨重了,所以現在我來了。

+0

任何您喜歡的語言?你是否嘗試做像Spotify這樣的事情? –

+0

2000年初的html lol,所以沒有。不,我試圖讓它可以手動地單獨輸入每個項目,所以一旦你編譯了列表,它就開始運行比較。 – ECHtoplasm

+0

haha​​hah,沒什麼好看的 –

回答

1

基本上有三個問題需要在這裏解決。

  1. 從用戶收集列表。

  2. 生成列表中成對組合的詳盡列表。

  3. 收集來自用戶的每一對偏好。

  4. 使用每個配對的偏好對列表施加一個順序。

前3個問題相當簡單,但第4個問題是一個數學討論和發表的主題。

以下是python3的裸骨頭腳本。

#!/bin/python3 
# Part 1 get the list from the user. 

items = [] 
item = "..." 
while(item!=""): 
    item = input("enter item name or type enter to continue:") 
    if(item!=""): 
     items.append(item) 

# Part 2 make combinations from list 

def combinations(aList): 
    done = [] 
    result = [] 
    for k in aList: 
     done.append(k) 
     for k2 in aList: 
      if not(k2 in done): 
       result.append((k,k2)) 
    return(result) 

toRank = combinations(items) 

# Part 3 get rankings for combinations 

preferences = {} 
for k in toRank: 
    choice = "2" 
    while not(choice in ["0","1"]): 
     choice = input("0:"+k[0]+"\t"+"1:"+k[1]+"\n") 
    preferences[k] = choice 

# Part 4 rank list based on rankings 
# This part is not straight forward but for the purposes of the example 
# we will simply put things in order based on how many times they were 
# chosen in a head on head comparison. 

wins = {k:0 for k in items} 

for k in preferences: 
    wins[k[int(preferences[k])]]+=1 

from operator import itemgetter 
rankedList = sorted(wins.items(), key=itemgetter(1)) 
rankedList.reverse() 

#Print The final result 
resultText = "" 
for k in rankedList: 
    resultText+=str(k)+"\n" 

with open("restultFile.txt","w") as outFile: 
    outFile.write(resultText[:-1]) 

這是最小可行產品。它是完全裸露的骨頭,但它的存在允許早期用戶確定哪些規範應該納入下一代產品。編寫代碼就是定義可獲得的增量。從小處開始建立起來。

如果你有興趣學習編程,我會建議你首先制定你的第一個目標「hello world」(編寫一個程序,將文本「hello world」放在屏幕上),而提供的例子是在python3中現有的HTML經驗可能會讓JS成爲您開始學習的最佳語言。

編輯:輸出打印到文件「restultFile.txt」,而不是打印到終端。

+0

這很好用!我可以看到你的骨頭是什麼意思,當你在列表中添加很多項目時,通過整個過程可能會很漫長,但在這種情況下,這實際上正是我需要的!但是,我仍然不知道如何打印完成的結果,你會怎麼做? – ECHtoplasm

+0

與我的方法類似,整潔的版本是誠實的! –

+0

您可以使用cmd中的'標記'從cmd複製粘貼。 – kpie

0

你去那裏,

#Written for user ECHtoplasm 
# Author: Ubdussmad <mailto:[email protected]> 
import operator 
data = [] 
parent = dict() 


def take_inputs(): 
    stop = False 
    while stop == False: 
     z=raw_input('Enter the name of the album or enter 0 if finished: ') 
     if z == '0': 
      stop=True 
     else: 
      data.append(z) 
      parent[z] = 0 

def compare(data): 
    for i in data: 
     temp = data[:] 
     temp.remove(i) 
     for j in temp: 
      z=raw_input('Is album %s better than album %s (y/n): '% (i,j)) 
      if z.lower() == 'y':parent[i] += 1 

#This loop runs for len(data)^2 - len(data) 
def main(): 
    take_inputs() 
    compare(data) 
    ranks = sorted(parent.items(), key=operator.itemgetter(0)) 
    print '\n ------Rankings in ascending order are...-------' 
    for i in ranks: 
     print i[0] 
main() 

這是一個有點清潔的版本,並使用Python2。7,使用的模塊是「內置的」,與其他答案相比,它有點不同,但仍然使用相同的概念!

+0

它似乎並沒有啓動。我是否應該和其他人的回答做同樣的事情並將其粘貼到記事本中,保存爲XXX.py文件? – ECHtoplasm

+0

是的,將它粘貼到記事本中,然後將其保存爲file.py –

+0

使用python file.py運行它 –

相關問題