3 回答
欢迎来到堆栈溢出!我们很乐意帮助您解决您可能遇到的任何编程问题。但是,我们不是家庭作业资源。你的大学无疑有这些。由于这个问题需要家庭作业方面的帮助,因此您不会得到“即插即用”之类的答案。相反,我们将通过指出您提供给我们的事实并提出引导性问题来促使您朝着正确的方向前进。
此外,您的问题似乎是重复的。在向我们提出问题之前,您应该认真审视一下。
首先,您的信息似乎被每个学生的空格/换行符分割。似乎这些块中的每一个都包含 1 个人的信息,因此沿着这些线拆分可能是有意义的。如果您已经掌握了classes
课程,这可能是一个考虑使用不同值存储相同类型信息的方法的好地方。否则,您可能会考虑其他数据类型,例如、或。lists
sets
dictionaries
似乎您想存储可以通过名称查找的值。Python 内置的 'dict' 类型和 'class' 系统非常擅长这一点!或者,列表中的课程名称和成绩元组可以轻松执行相同的任务。
当您打电话时,string.split('$')
您将拆分整个字符串,而不仅仅是一行。另外,当你说student == Justin
or subject == Calculus
python 试图找到一个名为Justin
or的变量时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
#!/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' )