2016-04-19 34 views
0

我正在研究一些hackerrank問題,並且已經研究了幾種方法來接受此輸入並循環。雖然n> 1。在每次迭代中將n減1

什麼是最好的選擇,試圖減少每次迭代n如下(因爲這似乎是不可能的)。

first_n = int(raw_input()) 

def findPercentage(n): 
    if n > 1: 
     studentinfo = raw_input() 
     return studentinfo 
     n = n - 1 

result = findPercentage(first_n) 
print result 

因爲我知道這一點,我知道我的邏輯可能有缺陷。 輸入以標準輸入傳遞,第一行列出了要遵循的總行數。我希望在第一行之後的每一行執行一個單獨的操作,除了最後一行,我希望執行不同的操作。

+2

'return'語句在遞減之前。應該在之後。是的,你的邏輯錯誤。這隻需要'studentinfo'輸入,並在'first_n'大於1時返回。你究竟在做什麼? – Himanshu

+1

我不知道你想達到什麼目的。沒有while循環和'n = n - 1'在'return student info'之後會**不會**執行。 – MattH

+0

我正在研究的問題是[這裏](https://www.hackerrank.com/challenges/finding-the-percentage)。我不是在尋找答案,而是一種更好的方式,我可以接近它。首先,我想抓住輸入到有用的變量或者列表中? – mutantChickenHer0

回答

1
n= int(input()) 

studentinfo= {} 

for i in range(n): 
    inputs= raw_input().split(" ") 
    studentinfo[inputs[0]]= inputs[1:]; 

這將創建一個字典studentinfo,其名稱爲鍵和標記列表作爲值。

+0

我花了很長時間,但我得到了這一點(同時避免建議的解決方案,直到後) - http://pastebin.com/UEZWXzA1 – mutantChickenHer0

0

第一行給你的學生的數量N:

n = int(raw_input()) 

然後你要遍歷你的函數N次:

for i in range(n): studentinfo = raw_input().split(" ") print(studentinfo[0])

這將創建一個liststudentinfo,這將打印學生的姓名。看看你可以從哪裏去。

+0

感謝這一點 - 雖然我意識到在該網站的評論中有效的解決方案 - 我忽略了它。第一次測試通過,但不是第二次。這將有助於現在...我會繼續黑客入侵。 – mutantChickenHer0