在Python中使用元组和列表时输出错误

时间:2014-04-16 15:33:58

标签: python list function tuples user-input

尝试学习一些python,我有以下任务:

  1. 从用户处获取短语作为输入。
  2. 检查输入是否包含我在代码中声明的辅音元组\ list中的辅音。
  3. 对于用户输入中的每个辅音,打印辅音,然后输入字母' o'和辅音本身。
  4. 例如:

    • 用户输入“'”字样'作为输入
    • 输出应该是:' sosomometothohinongog' (元音中不存在元音 辅音元组,因此没有附加)。

    这是我的代码:

    #!/usr/bin/python
    
    consonant = ('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z')
    
    def isConsonant(user):
        for consonant in user:
            print consonant + "o" + consonant
    
    var = raw_input("type smth: ")
    isConsonant(var)
    

    这是我得到的:

    root@kali:~/py_chal# ./5.py
    type smth: test
    tot
    eoe
    sos
    tot
    

    我遇到了麻烦:

    • 该代码将元音视为辅音,即使它们不在元音中 列表(请注意' e')。
    • ' print'方法添加一个新行 - 这是通过导入来解决的 sys模块并使用' write'。

    非常感谢任何提示。

2 个答案:

答案 0 :(得分:3)

consonant = ('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z')
def isConsonant(user):
    for letter in user:
        if letter in consonant:
            print letter + "o" + letter

var = raw_input("type smth: ")
isConsonant(var)

OR

consonant = ('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z')
print "\n".join(["%so%s" % ( letter, letter) for letter in raw_input("type smth: ") if letter in consonant])

或者

print "\n".join(["%so%s" % (l,l) for l in set(raw_input("type smth: ")).difference('aeiou')])

答案 1 :(得分:1)

您可以轻松打印而无需在最后添加新行,而无需通过在打印结束时添加a来导入任何内容,如下所示:

print 'hello ',
print 'world',
print '!'