我想创建一个将所有奇数替换为字符串的列表

2024-04-26 18:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我对for和if语句有问题,但偶尔会出现内存错误

w = 0
x = []

while w < 100:
    if w % 2 != 0:
        x.append('boss')
    else:
        x.append(w)
        w = w+1

我不确定是什么导致了这个问题。你知道吗


Tags: 内存forif错误语句elseappendwhile
3条回答

问题是w=w+1行应该在“else”之外,这样while循环的每次迭代变量都会递增。你知道吗

w = 0
x = []

  while w < 100:
        if w % 2 != 0:
            x.append('boss')
        else:
            x.append(w)
        w = w+1

顺便说一句,您可以使用列表理解来轻松地完成此操作(此代码生成完全相同的列表):

x = [val if not val % 2 else 'boss' for val in range(100)]

让我修复您的代码(while语句)

w = 0
x = []

while w < 100:
      if w % 2 != 0:
          x.append('boss')
      else:
          x.append(w)
      w = w+1

错误是w总是1,因为

  1. w只有当w可被2整除时才加1。由于1不能被2整除,因此此代码将停止

  2. 如果需要,可以使用for语句。for语句比while语句简单。因此,代码如下所示

x = []
for w in range(100):
      if w % 2 != 0:
          x.append('boss')
      else:
          x.append(w)
  1. 你可以使用列表理解使它更简单,但有点复杂。你知道吗
x = [w if w % 2 != 0 else 'boss' for w in range(100)]

尝试以下操作:

w = 100
x = []
for i in range(w+1):
    if i % 2 != 0:
        x.append('boss')
        continue
    x.append(i)
    i = i+1

相关问题 更多 >