2011-03-08 137 views
-1

基本上,該功能必須提示用戶輸入一週中一天中的前兩個字母,並且它應該返回一週的全文。它應該繼續提示用戶這樣做,直到用戶輸入一個無效的兩個字符。縮寫和詞典

def abr(): 
    abr = input("Enter a day abbreviation:") 
    days = {Su: Sunday, Mo: Monday, Tu: Tuesday, We:Wenesday, Th: Thursday, Fr: Friday, Sa: Saturday, Su: Sunday} 
    if days in abr: 
     return days[''] 

我試圖用字典解決這個問題,但我不太熟悉字典和它們的限制。

+0

http://docs.python.org/tutorial/datastructures.html#dictionaries – 2011-03-08 02:47:06

+0

參見[http://docs.python.org/library /stdtypes.html#mapping-types-dict](http://docs.python.org/library/stdtypes.html#mapping-types-dict),它是'dict'類型的文檔,並且有關於操作符和'dict'的方法。 – Abbafei 2011-03-08 02:54:13

回答

2

你不是太遙遠,你只是得到了顛倒的順序。哦,那些字典鍵和值都應該是字符串。

def abr(): 
    """Return the day given a two-letter abbreviation.""" 
    # Don't use the function name as a variable in the function. 
    # It's just not good practice. 
    abbrev = input("Enter a day abbreviation:") 
    days = { 
     "Su": "Sunday", 
     "Mo": "Monday", 
     "Tu": "Tuesday", 
     "We": "Wednesday", # [Spelling fixed] 
     "Th": "Thursday", 
     "Fr": "Friday", 
     "Sa": "Saturday", 
    } # Extra Sunday removed 

    return days.get(abbrev, '') 

爲了使環路的行爲發生,所以它一直走,直到他們打一個無效的縮寫,調用函數在一個循環:

while True: 
    if abr() == "": 
     break 

或短一點:

while abr() != "": 
    pass 
+0

這不起作用。 :/另外,需要解決的另一件事是我如何讓我的代碼不斷提示用戶,直到輸入了一個無效的縮寫。 – 97834657647563 2011-03-08 02:47:42

+1

@ 97834657647563 - 工作正常,但有很多問題你沒有問,比如「它怎麼沒有打印出來?」 :P – kojiro 2011-03-08 03:12:20

3

kojiro是對的。你必須扭轉你條件

if abr in days: 
    return days[abr] 

不要忘記使用字符串你的詞典鍵和值,因爲用戶輸入將作爲你的鑰匙使用一個字符串返回。

您還必須使用raw_input,因爲input is actually equivalent to an eval這將要求您的用戶輸入「Tu」而不是Tu。

至於循環,則可以在檢測到無效縮寫符號

def abr(): 
    abr = raw_input("Enter a day abbreviation:") 
    days = {"Su": "Sunday", 
      "Mo": "Monday", 
      "Tu": "Tuesday", 
      "We": "Wednesday", 
      "Th": "Thursday", 
      "Fr": "Friday", 
      "Sa": "Saturday", 
      "Su": "Sunday"} 
    if abr in days: 
     return days[abr] 
    return None 


while(1): 
    day = abr() 
    if day is not None: 
     print day 
    else: 
     break 
+0

正確調用raw_input()。 – kojiro 2011-03-08 03:08:38

0

current_designation_upper = Transformed_Data.designation.tolist()[I] .upper() current_designation_upper_array =重新使用while循環和出口.split(「[[email protected]#$%^ & *()_ + =〜`:<>,/'|} {[] |]」,current_designation_upper) role_current_designation_null_removed = [x for current_designation_upper_array if x ] current_designation_upper_array_with_abbrevation ='' for k in range(0,len(role_current_designation_null_移除)): temp_current_designation_upper_array_with_abbrevation = current_designation_upper_array_with_abbrevation + role_current_designation_null_removed [K] [0]