2012-11-13 18 views
2

我是python的新手,我們剛剛開始研究字符串。這是我遇到的一些問題。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 
+2

@Tim這很有趣,因爲樣本字符串_exactly的same_。 – rsegal

+1

@rsegal更有趣的是,重複問題被關閉了,因爲它不可能幫助未來的訪問者*。 – kreativitea

回答

2

歡迎來到Stack Overflow!我們很樂意協助您解決您可能遇到的任何編程問題。但是,我們不是一個家庭作業資源。你的大學無疑有那些。由於這個問題需要幫助作業,你不會得到「即插即用」的答案。相反,我們會通過指出您提供給我們的事實並提出主要問題來幫助您朝正確的方向發展。

此外,它似乎是你的問題是重複的。在擺脫擺在我們面前的問題之前,你應該認真看待。

首先,您的信息似乎被每個學生的空格/換行符分隔。似乎每個塊都包含1個人的信息,所以按照這些線分割可能是有意義的。如果您的課程中有classes,這可能是考慮以相同種類的信息與不同的值來存儲的一種好方法。否則,您可能會考慮其他數據類型,例如lists,setsdictionaries

看起來好像你想存儲,你可以通過他們的名稱查找。 Python的內置「字典」類型和「類」系統非常擅長!或者,列表中的課程名稱和成績的元組可以很容易地執行相同的任務。

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 
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') 
+0

爲什麼每次都要處理字符串?將它處理一次並將其存儲在適當的數據結構中會更有意義,因此可以在不變的時間內完成查找。 – Tim

+0

恐怕他無法向他的老師解釋數據結構 – lenik