【问题标题】:Getting wrong output when working with tuple and list in Python在 Python 中使用元组和列表时得到错误的输出
【发布时间】:2014-04-16 15:33:58
【问题描述】:

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

  1. 从用户那里获取一个短语作为输入。
  2. 检查输入是否包含我在代码中声明的辅音元组\列表中的辅音。
  3. 对于用户输入中的每个辅音,打印辅音后跟字母“o”和辅音本身。

例如:

  • 用户键入单词“某物”作为输入
  • 输出应为:'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”)。
  • “打印”方法添加了一个新行 - 通过导入 sys 模块并使用“写入”。

非常感谢任何提示。

【问题讨论】:

  • 您对in 的两种用法感到困惑。它在 for 循环和 if 语句中意味着不同的东西。

标签: python list function tuples user-input


【解决方案1】:
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)

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')])

【讨论】:

  • 感谢 bsoist,解决了它。你能解释一下 2 个代码 sn-ps 之间的行为变化吗?难以理解我的代码中有什么问题。
  • 其他人指出了一些事情——使用“in”的两种不同方式——这可能解释了为什么你要重新分配辅音。您将其设置为元组,然后将其重置为用户输入的单词中的每个字母(注意我对变量名称的更改)。你也永远不会检查你正在检查的字母是否在元组中,一旦你删除它就不能这样做。 :)
  • @Franko 您的循环 for consonant in user 正在为 user 的每个字母创建一个新变量 consonant,而不是按照您的意图对全局进行测试。
【解决方案2】:

您可以轻松地打印而无需在末尾添加新行,而无需通过在打印末尾添加 , 来导入任何内容,如下所示:

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

【讨论】:

  • 当你切换到 Python 3 时,使用end=''
猜你喜欢
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 2020-04-16
  • 2019-09-29
  • 1970-01-01
相关资源
最近更新 更多