2
4

3 回答 3

2

欢迎来到堆栈溢出!我们很乐意帮助您解决您可能遇到的任何编程问题。但是,我们不是家庭作业资源。你的大学无疑有这些。由于这个问题需要家庭作业方面的帮助,因此您不会得到“即插即用”之类的答案。相反,我们将通过指出您提供给我们的事实并提出引导性问题来促使您朝着正确的方向前进。

此外,您的问题似乎是重复的。在向我们提出问题之前,您应该认真审视一下。

首先,您的信息似乎被每个学生的空格/换行符分割。似乎这些块中的每一个都包含 1 个人的信息,因此沿着这些线拆分可能是有意义的。如果您已经掌握了classes课程,这可能是一个考虑使用不同值存储相同类型信息的方法的好地方。否则,您可能会考虑其他数据类型,例如、或。listssetsdictionaries

似乎您想存储可以通过名称查找的。Python 内置的 'dict' 类型和 'class' 系统非常擅长这一点!或者,列表中的课程名称和成绩元组可以轻松执行相同的任务。

于 2012-11-13T00:16:57.023 回答
0

当您打电话时,string.split('$')您将拆分整个字符串,而不仅仅是一行。另外,当你说student == Justinor subject == Calculuspython 试图找到一个名为Justinor的变量时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
于 2012-11-13T00:20:20.363 回答
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 回答