2011-04-07 58 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]