【问题标题】:Problem with adding numbers to a string in a while loop Python在while循环Python中将数字添加到字符串的问题
【发布时间】:2020-08-31 13:03:53
【问题描述】:

我需要生成带有编号的项目列表。例如:

item-1
item-2
item-3
..
item 246234

我正在尝试使用 while 循环来解决它。这是我的代码:

pages = []
page = 'item-'
nr = 1
last = 10
while nr <= last
    page = page + str(nr)
    pages.append(page)
    nr += 1

但我得到的不是预期的结果:

item-1
item-12
item-123
item-1234
and so on

我该如何解决这个问题?

【问题讨论】:

  • 这不是 while 循环的典型用途。虽然你可以让它工作,但我强烈建议下面发布的其他解决方案之一不要使用 while。

标签: python loops


【解决方案1】:

您的page 在每次迭代中累积数字。在循环中使用另一个变量名:

while nr <= last
    pageX = page + str(nr)
    pages.append(pageX)
    nr += 1

或者直接将页面添加到列表中,没有中间变量:

while nr <= last:
    pages.append(page + str(nr))
    nr += 1

或使用for 循环,这样您就不必自己检查和增加数字:

for nr in range(1, last+1):
    pages.append(page + str(nr))

或列表理解,以使整个代码更短并且(恕我直言)更具可读性:

pages = ["item-" + str(nr) for nr in range(1, last+1)]

【讨论】:

    【解决方案2】:

    当您说page = ... 时,您正在覆盖您每次使用的原始“模板”。只需使用不同的变量:

    while nr <= last:
        current_page = page + str(nr)
        pages.append(current_page)
        nr += 1
    

    顺便说一句,这在惯用的python中表达得更清楚,如下所示:

    pages = [f"item-{i}" for i in range(1, 11)]
    

    【讨论】:

      【解决方案3】:

      你可以用pythonic的方式来做:

      pages = ['item-'+str(nr) for nr in range(1, last+1)]
      

      【讨论】:

        【解决方案4】:

        这是我的方式,循环到最后几页并附加到列表中,使用当前索引创建每个页面:

        pages=[]
        pagex = "item-"
        for i in range(1,last+1):
            page = pagex + str(i)
            pages.append(page)
        

        【讨论】:

        • 如果您添加解释,您的答案会更好。使用edit 注释答案。
        猜你喜欢
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2015-01-12
        • 1970-01-01
        • 1970-01-01
        • 2015-07-31
        • 2015-03-25
        • 2019-02-03
        相关资源
        最近更新 更多