【问题标题】:Loop through word with letter evaluated as False?循环使用字母评估为假的单词?
【发布时间】:2014-07-28 17:55:19
【问题描述】:

以下是类示例中的代码。 困扰我的是这个部分:

up = False
for i in x:
    if up:
       i=i.upper()

我真的不明白被迭代的单词中的一个字母如何被评估为 False 或 True?

这是整个问题:

def mirror(x):
  return x+x[::-1]

def steps(x):
  result=""
  x=x.lower()
  up=False
  for i in x:
     if up:
       i=i.upper()
     result+=i
     up = not up
  return result

print(steps("jabberwocky"))
print(steps(mirror("CAT")))

【问题讨论】:

  • if 语句中计算的变量是up,而不是其中一个字母(这些字母存储在i 中)。
  • 这是什么语言?它看起来像 python,但你真的应该告诉我们。理想情况下,通过标记。还是我们应该将其视为伪代码?
  • @JanDvorak 抱歉,它是 Python。网站新手,我不知道 - 谢谢 :)
  • @JanDvorak Python 可读性很强,看起来像伪代码。

标签: python string loops boolean


【解决方案1】:

您有一个循环遍历字符串中的每个字符。 up 是一个 boolean 变量,最初设置为 False。所以最初你有

 if False:
   i=i.upper()

在 for 循环结束时,您将 up 设置为 Trueup = not up 始终切换 boolean 值 - False 变为 TrueTrue 变为 False)。所以你的 for 循环的第二次迭代你有

if True
  i=i.upper()

此循环将接收一个字符串,并且每个其他字符都将大写:

>>> print(steps("jabberwocky"))
jAbBeRwOcKy

【讨论】:

    【解决方案2】:

    steps函数正在做的是:

    1) 将所有 x 字符设置为小写

    2) 最初将变量“up”设置为 False

    3) 对于 x 中的每个字母,

    • 如果变量 up 为真,则将该字母变为大写
    • 将该字母附加到结果中
    • 设置相反(如果真 => 假 // 如果假 => 真)

    4) 返回结果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多