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