【问题标题】:How to iterate through a list using a stepper variable in Python?如何在 Python 中使用步进变量遍历列表?
【发布时间】:2017-11-20 13:18:50
【问题描述】:

我正在尝试编写一个函数,该函数在给定猜测字符的输入和要猜测的秘密的情况下返回刽子手风格的输出。我首先创建一个新列表 aset 到 - 与秘密长度一样多。然后我遍历这个变量并测试a[stepper] == letter 是否letter 是我们循环时的walker。

目前为了跟踪这个步进器,我正在使用这段代码

a = ["-"] * len(secret) 
for curr in guessed:
    letter_count = 0  # Stepper
    for letter in secret:
        if curr == letter:
            a[letter_count] = curr
        letter_count += 1

我在这里使用的letter_count 有内置功能吗?

【问题讨论】:

  • 什么是a?不是最好的变量名...
  • @DeepSpace a 是设置长度的破折号列表
  • 如果a == '-'*len(secret),那么curr什么时候会变成-以外的任何东西?
  • @PatrickHaugh 谢谢你的意思,我复制了我的代码错误我遍历guessed而不是a
  • 你不能原地改变字符串中的字符,你必须建立一个新的。 ''.join([letter if letter in guessed else '-' for letter in secret])

标签: python variables for-loop iteration


【解决方案1】:

像这样使用enumerate() 内置函数:

a = ['-'] * len(secret)
for curr in guessed:
    for i, letter in enumerate(secret):
        if curr == letter:
            a[i] = curr

【讨论】:

  • 变量a 必须是listdict。如果是list,它的长度必须与secret 相同。
  • a 是一个与 secret 长度相同的列表
  • 您正在创建一个新的a 列表?
  • 是的,在函数的开头a 是由一个循环定义的,它使它成为一个与密钥长度相同的破折号列表。
  • @Travis 为了完整起见,我在这里也定义了列表a
【解决方案2】:

您可以使用join 和理解来动态创建显示的单词。猜测存储在set 中,三元运算符检查是否应该显示字母或-

>>> word = "hangman"
>>> guessed = set()
>>> ''.join(letter if letter in guessed else '-' for letter in word)
'-------'
>>> guessed.add('a')
>>> ''.join(letter if letter in guessed else '-' for letter in word)
'-a---a-'
>>> guessed.add('m')
>>> ''.join(letter if letter in guessed else '-' for letter in word)
'-a--ma-'
>>> guessed.add('e')
>>> ''.join(letter if letter in guessed else '-' for letter in word)
'-a--ma-'
>>> guessed.add('n')
>>> ''.join(letter if letter in guessed else '-' for letter in word)
'-an-man'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多