2
4

3 に答える 3

2

スタック オーバーフローへようこそ! プログラミングでお困りのことがございましたら、喜んでお手伝いさせていただきます。ただし、私たちは宿題のリソースではありません。あなたの大学には間違いなくそれらがあります。この質問は宿題の手伝いを求めているため、「プラグ アンド プレイ」のような回答を得ることはできません。代わりに、私たちはあなたが私たちに与えてくれた事実を指摘し、主要な質問をすることによって、あなたを正しい方向に導きます.

さらに、あなたの質問は重複しているようです。私たちの前で質問をする前に、あなたは真剣な目で見ていることが期待されています.

まず、情報が学生ごとにスペース/改行で分割されているようです。これらの各ブロックには 1 人の情報が含まれているように見えるので、これらの行に沿って分割することは理にかなっているかもしれません。コースを修了した場合は、同じ種類の情報異なる値classesで保存する方法を検討するのに適した場所かもしれません。それ以外の場合は、 、、などの他のデータ型を検討できます。listssetsdictionaries

名前で検索できるを保存したいようです。Python の組み込みの 'dict' 型と 'class' システムは、この点で非常に優れています! あるいは、リスト内のコース名と成績のタプルで同じタスクを簡単に実行できます。

于 2012-11-13T00:16:57.023 に答える
0
#!/usr/bin/env python

string = '''
Justin$Calculus$90$Java$85$Python88$
Taylor$Calculus$73$Java$95$Python86$
Drew$Calculus$80$Java$75$Python94$
'''

def findScore(student,subject) :
    global string
    students = [i for i in string.split('\n') if i]    # non-empty strings only
    for i in students :
        parts = i.split('$')
        if parts[0] == student :
            for j in range(1,len(parts),2) :
                if parts[j] == subject :
                    print student, 'got', parts[j+1], 'in', parts[j]

findScore( 'Justin', 'Java' )
于 2012-11-13T00:27:27.653 に答える
0

呼び出すstring.split('$')と、1 行だけでなく、文字列全体が分割されます。student == Justinまた、 orと言ったとき、 python はorsubject == Calculusという名前の変数を見つけようとしています。JustinCalculus

私が提案するのは、インタラクティブな python インタープリターを使用してこれらのことを試すことです。

   >>> a = '''
   ... Jstin$Calculus$90$Java$85$Python88$
   ... Taylor$Calculus$73$Java$95$Python86$
   ... Drew$Calculus$80$Java$75$Python94$
   ... '''

   >>> a.split('$')
   ['\nJustin', 'Calculus', '90', 'Java', '85', 'Python88', '\nTaylor', 'Calculus',
  '73', 'Java', '95', 'Python86', '\nDrew', 'Calculus', '80', 'Java', '75', 'Pyth
on94', '\n']
   >>> b = 'Justin'
   >>> if b == Justin:
   ...  print 'yes'
   ...
   Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  NameError: name 'Justin' is not defined
于 2012-11-13T00:20:20.363 に答える