【问题标题】:Python code, .rstrip isn't working?Python 代码,.rstrip 不起作用?
【发布时间】:2016-11-08 15:43:58
【问题描述】:

我在这里搜索了答案并尝试实施它们,但我认为我缺少一些微小的细节。我有一个非常短的 python 代码用于一个程序,它应该返回带有人员输入句点的首字母(对于他们的全名)。例如,输入是 Atticus Leonard Beasley,输出应该是

A.L.B.

但我得到的是:

A.
L.
B.

这是我的代码:

def main():

    full_name = input("Enter your first, middle, and last name: ")

    for ch in full_name:
        if ch.isupper():
            ch = ch.rstrip('\n')
            print (ch,'.', sep='')

main()

【问题讨论】:

  • 如果ch'A',你期望'A'.strip('\n') 是什么?
  • for ch in full_name 不应该有一个 \n 作为 ch 因为 input 将所有输入带到换行符
  • 我认为你把事情复杂化了。这些是您需要的步骤:使用split 拆分输入,使用索引获取每个单词的第一个字符,使用'.'.join 将它们连接在一起
  • 在您的print 通话中使用end=''
  • 感谢 Mark Dickinson,这正是我所需要的!

标签: python uppercase strip


【解决方案1】:

仅供参考,您可以使用 splitjoin 执行此操作:

def main():

    full_name = input("Enter your first, middle, and last name: ")
    initials = []

    for name in full_name.split():
        initials.append(name[0])

    print('.'.join(initials) + '.')

main()

或者使用列表推导:

def main():

    full_name = input("Enter your first, middle, and last name: ")
    print('.'.join(name[0] for name in full_name.split())+'.')

main()

【讨论】:

  • 您忘记在列表解析示例中将 .split() 函数添加到 full_name。
  • @MaxChrétien 谢谢!
【解决方案2】:

我认为你可以用一种更简单、更“pythonic”的方式来做到这一点。

full_name = input("Enter your first, middle, and last name: ")

print(''.join([ch[0].upper() + '.' for ch in full_name.split()]))

解释

您可以使用split() 函数来确保在没有多余空格的情况下处理每个单词,而不是对名称的每个字母进行for 循环。

sentence = "hello world"

for ch in sentence.split():
    print(ch) # hello
    break

现在,您尝试验证第一个字母是否为uppercase,但如果用户输入他的姓名而没有uppercase,则您的函数将不起作用。更简单的解决方案是提取单词ch[0] 的第一个字母并自动添加uppercasech[0].upper()

也许单线解决方案令人困惑,但大多数 python 开发人员在解决方案易于阅读时使用list comprehension 而不是for 循环。

编辑

还有一点,即使您正在编写一个简单的函数,例如打印姓名的首字母,您也应该始终相应地编写测试。

一个好的开始方法是使用doctests,因为它强制你描述你的函数的作用。即使您认为这是浪费时间,但当您的程序变大时,它有助于克服许多问题。如果你想尝试写你的第一个doctest,我很乐意帮助你

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    相关资源
    最近更新 更多