【问题标题】:strings within tuples python 3元组python 3中的字符串
【发布时间】:2019-05-13 03:38:16
【问题描述】:

就我现在在学习 python 3.x 时遇到的一个特别令人讨厌的挑战寻求建议。它希望我接受一个字符串,然后将其输出到不同格式的元组中的 4 个单独的子字符串中。 UPPER CASE / 小写 / Title Case / 和 esac esrever(反转大小写)。

def stringcases(str):

    str = "bob frank tim john jill"
    reverse = ''

    uppercase = str.upper()
    lowercase = str.lower()
    single_word = str.split()
    titlecase = (' '.join((word.capitalize() for word in single_word)))
    for l in str:
        reverse = l + reverse
    cv = uppercase, lowercase, titlecase, reverse
    convergence = tuple(cv)

    return convergence

所以我第一次误解它并最终返回一个包含每个挑战参数的 4 个元组的元组,在修复它之后我似乎仍然碰壁。现在我知道这可能只是我在特定挑战中没有遇到的事情,但我认为最好问问我是否做错了以及为什么,因为现在输出看起来像我认为应该的那样一个包含 4 个子字符串的元组,它们都采用规定的格式。

输出看起来像这样。

('BOB FRANK TIM JOHN JILL', 'bob frank tim john jill', 'Bob Frank Tim John Jill', 'llij nhoj mit knarf bob')

我做错了吗?如果是这样,我会错过/错过什么。

【问题讨论】:

  • 奇怪的是你的函数根本不使用它的唯一参数。您立即覆盖作为参数传递的值。
  • 是的,我什至没有想过这个问题,我相信这就是整个问题,这可能是我在解决问题时遇到这么多麻烦的重要原因。我的意思是,据我所知,我的输出是正确的,但是来自测试的使用输入被我的固定输入覆盖,因此对我来说无效。

标签: string python-3.x tuples substring


【解决方案1】:

看看下面的函数。

def stringcases(input_string):
    uppercase = input_string.upper()
    lowercase = input_string.lower()
    single_word = input_string.split()
    titlecase = (' '.join((word.capitalize() for word in single_word)))
    reverse = input_string[::-1]
    cv = (uppercase, lowercase, titlecase, reverse)
    return cv

您需要更改的第一件事是变量名。您正在使用 str 作为输入变量。不要那样做。 str 是一个原生的 Python 类。不要覆盖它。

您应该从函数中删除的第二件事是这一行

str = "bob frank tim john jill"

您已经在接受用户输入。使用它而不是用固定输入覆盖它。在您的函数中,无论您输入什么输入字符串,您都会得到相同的输出。

最后,要反转字符串,您可以简单地执行以下操作

>>> 'abc'[::-1]
'cba'

您不需要for 循环。

【讨论】:

  • 感谢 Clock_Slave,我认为固定的输入会被用于输入的任何测试覆盖,显然这是错误的,因为我完全间隔固定输入,并且在输出终于正确了,但是在代码中到达那里的道路在您指出的地方是错误的。还要感谢其他提示,我想编写高效的代码,因此找出我可以少写的地方以实现与字符串反转一样的相同结果很棒。
猜你喜欢
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2018-04-12
  • 2021-11-06
  • 2018-05-15
  • 1970-01-01
相关资源
最近更新 更多