2016-04-19 22 views
0

の1によるn>が1減少nの間、私はいくつかのhackerrank問題に取り組んでいると私はそれを介して、この入力とループを取るためにいくつかの方法を見てきました。各反復

(これを可能にしていないようとして)以下のように各反復での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 

私はとしては、私は私のロジックは欠陥がある可能性があることを理解し、これに知っていました。 入力はstdinとして渡され、最初の行には続く行の総数が表示されます。最初の行の後のすべての行で1つの操作を実行したいのですが、別の操作を実行する最後の行は例外です。

+2

'return'ステートメントは、デクリメントの前です。それは後にする必要があります。そして、はい、ここのあなたのロジックは間違っています。これは 'studentinfo'入力を受け取り、' first_n'が1より大きい場合に返します。あなたは実際に何をしようとしていますか? – Himanshu

+1

私はあなたが何を達成しようとしているのか分かりません。 whileループはなく、 'return student info'の後に来る' n = n - 1'は決して実行されません。 – 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数をループにしたい:これはと呼ばれるlistを作成します

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

studentinfoと入力すると、学生の名前が印刷されます。どこから行くことができるかを見てください。

+0

ありがとう - 私はそのサイトのコメントで効率的な解決策を知っているが、私はそれを無視している。最初のテストは合格しますが、合格はしません。これは今のところ助けになるだろう...私はハッキングを遠ざける。 – mutantChickenHer0