3 に答える
スタック オーバーフローへようこそ! プログラミングでお困りのことがございましたら、喜んでお手伝いさせていただきます。ただし、私たちは宿題のリソースではありません。あなたの大学には間違いなくそれらがあります。この質問は宿題の手伝いを求めているため、「プラグ アンド プレイ」のような回答を得ることはできません。代わりに、私たちはあなたが私たちに与えてくれた事実を指摘し、主要な質問をすることによって、あなたを正しい方向に導きます.
さらに、あなたの質問は重複しているようです。私たちの前で質問をする前に、あなたは真剣な目で見ていることが期待されています.
まず、情報が学生ごとにスペース/改行で分割されているようです。これらの各ブロックには 1 人の情報が含まれているように見えるので、これらの行に沿って分割することは理にかなっているかもしれません。コースを修了した場合は、同じ種類の情報を異なる値classes
で保存する方法を検討するのに適した場所かもしれません。それ以外の場合は、 、、などの他のデータ型を検討できます。lists
sets
dictionaries
名前で検索できる値を保存したいようです。Python の組み込みの 'dict' 型と 'class' システムは、この点で非常に優れています! あるいは、リスト内のコース名と成績のタプルで同じタスクを簡単に実行できます。
#!/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' )
呼び出すstring.split('$')
と、1 行だけでなく、文字列全体が分割されます。student == Justin
また、 orと言ったとき、 python はorsubject == Calculus
という名前の変数を見つけようとしています。Justin
Calculus
私が提案するのは、インタラクティブな 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