2011-04-07 62 views
1

編寫一個名爲weird()的函數,它以三個字符串作爲參數並向後打印最長的一個字符串。 (在一個相等的情況下,這是較早參數字符串應選擇python-Weird Print ... HW

函數調用:

weird("I", "Love", "Python") 

應導致以下端子輸出:

nohtyP 

這是我做了那麼遠,

running = True 

while running: 

    word = raw_input("Enter word:") 

    if word[0] in "aeiou": 
     print word + "yay" 
    else: 
     print word[1:] + word[0] + "ay" 
+4

你似乎有兩個不同的things..one是實際的Pig Latin,和一個是向後打印。 – 2011-04-07 20:47:33

+2

您的標題,問題和示例代碼似乎是關於不同的事情。 – oosterwal 2011-04-07 20:49:10

+0

哦,是啊對不起..我也在做那個明膠問題..對不起, – Sarah 2011-04-07 20:57:17

回答

1

不幸的是我..我沒有得到劃痕部分權我自己用python有點新手,但我看到這樣做最簡單的方法是參考此Reverse a string in Python以查看反轉字符串的簡單方法。對於拾取要反轉的字符串的邏輯,創建列表並根據長度存儲最大字符串將是最容易的。

這是一個可能的解決方案,在另一個線程上使用反向方法。理想情況下,這種方法只需要一個列表作爲參數,因爲它可以適用於所有大小的輸入。

def weird(strOne, strTwo, strThree): 
    strings = [strOne, strTwo, strThree] 
    max = "" 
    for x in strings: 
     if len(max) < len(x): 
      max = x 
    print max[::-1] 

weird("I", "Love", "Python") 
+0

@cooper .. thnx它很完美 – Sarah 2011-04-09 16:06:34

4

更快的方法(和它的作品的字符串的任意數字)是:

def weird(*s): 
    return sorted(s,key=len,reverse=True)[0][::-1] 
+0

*是什麼意思? – lamwaiman1988 2011-04-15 08:22:52

+0

在參數前面添加'*'意味着您可以根據需要傳入儘可能多的參數,Python會將其視爲參數列表。 – 2011-04-15 08:29:31

+0

+1輸入的一般化,我希望我可以爲FP方法做+1) – 2012-03-02 14:39:28

0
def weird(str1, str2, str3): 
    # sort them according to length 
    # guaranteed stable sort 
    strings= sorted((str1, str2, str3), key=len) 
    # maximum_length is the length of the last one 
    maximum_length= len(strings[-1]) 

    # now return the earliest (str1 < str2 < str3) 
    # having len() == maximum_length 
    for a_string in reversed(strings): 
     if len(a_string) < maximum_length: 
      break 
     result= a_string 

    return result[::-1]