【问题标题】:Python simple code i cant fix help1!1Python 简单代码我无法修复 help1!1
【发布时间】:2018-08-15 02:13:15
【问题描述】:
def print_guessed(secret_word):
    new_word = secret_word
    for i in new_word:
        i = "-"
    return new_word
print print_guessed("claptrap")

这只是打印 claptrap 而不是 -------- 如何解决?

【问题讨论】:

  • return re.sub("[a-zA-Z]","-",secret_word)
  • 首先,字符串是不可变的,所以I='-'不会改变new_wordI的值。所以你最终只是将- 分配给变量I 而什么都不做。你可以做的是new_word = list(secret_word) 并遍历位置...for I in range(len(new_word)): new_word[I] = '-'.. 然后重新调整连接的字符串''.join(new_word)
  • 字符串是不可变的,循环变量根本不是这样工作的,你真的需要一个基础教程。
  • 这个python-requests怎么样?我删除了那个标签。

标签: python python-3.x python-2.7


【解决方案1】:

这应该可以解决它:

def print_guessed(secret_word):
    return '-'*len(secret_word)

你的代码的问题是你试图通过它的索引来修改一个字符串。然而,Python 中的 str 对象是不可变的。您必须构造一个新字符串。

请注意,此函数返回的结果与其他人建议的结果相同。但是它更简单(并且可能更快),因为它不需要循环。

【讨论】:

  • 我认为做i='-' 只是一个测试,op 可能想为任何其他给定的字符更改字符串中的字符..
  • @RafaelC 这正是我的代码正在做的事情:用'-'“替换”所有字符——以构造一个具有相同长度的'-' 的新字符串
【解决方案2】:
def print_guessed(secret_word):
    return ''.join('-' for i in secret_word)

【讨论】:

    【解决方案3】:

    如果您正在寻找带有for loop 的答案,而不是更有效的+紧凑列表理解,则可以这样做。对于初学者来说,最优雅的答案通常不容易理解(根据我的经验),所以希望这会有所帮助。

    def print_guessed(secret_word):
        new_word = ''
        for i in secret_word:
            new_word += '-'
        return new_word
    print(print_guessed("claptrap"))
    

    在上面,我们为secret_word 变量中的每个字符添加“-”到new_word(最初为空)。

    正如许多人所指出的,字符串在 Python 中是不可变的。请注意,new_wordfor loop 内的每次迭代中都被分配了一个新值(而不是通过索引进行修改)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      相关资源
      最近更新 更多