2016-04-19 33 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