Python字符串困难

时间:2012-11-13 00:02:58

标签: python string

我是python的新手,我们刚刚开始研究字符串。这是一个我遇到一些困难的问题。

给你一个很长的字符串:

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

该字符串有三行。它包含三个学生的三门课程的分数。写一个函数findScore(student, subject)。当您调用findScore(‘Drew’,’Java’)等函数时,函数会打印“Drew got 75 of the course Java.”除了函数findScore(student, subject)之外,您还可以编写其他函数。所有功能都在一个程序中。

我正在考虑做这样的事情,但是已经碰到了墙,只能到达任何地方。我没有太多的python经验,所以这可能是一种更好的方法。请帮忙。

def findScore(student,subject):
  for i in string.split('$'):
    if student == Justin and subject == Calculus:
      JCalscore=90
    if student == Justin and subject == Java:
      JJavscore=85
    if student == Justin and subjext == Python:
      JPytscore=88  

3 个答案:

答案 0 :(得分:2)

欢迎使用Stack Overflow!我们很乐意为您解决任何编程问题。但是,我们不是家庭作业资源。你的大学无疑拥有那些。由于这个问题需要家庭作业的帮助,你不会得到“即插即用”的答案。相反,我们会指出你给我们的事实,并提出引导性的问题,从而使你朝着正确的方向发展。

此外,您的问题似乎是重复的。在我们面前提出问题之前,你应该认真看待。

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

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

答案 1 :(得分:0)

当你拨打string.split('$')时,你正在拆分整个字符串,而不仅仅是一行。此外,当您说student == Justinsubject == Calculus时,python正在尝试查找名为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

答案 2 :(得分: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' )