首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在while循环中,在变量之间交替的最佳方法是什么?

在while循环中,在变量之间交替的最佳方法是什么?
EN

Stack Overflow用户
提问于 2022-09-04 03:16:10
回答 2查看 49关注 0票数 0

在一个循环中,在一周中不同的日子中,在两个变量之间交替的最佳方法是什么?

例如,假设一个人在一周内计划了草莓采摘和蓝莓采摘,两者在需要打印的变量中都有不同的过程。如果选择采摘三天,那么顺序应该是:草莓采摘,蓝莓采摘,草莓采摘。如果答案是7天,那么所有7天都应该打印如下:草莓采摘,蓝莓采摘,草莓采摘。

到目前为止,我知道如何做到这一点的唯一方法是将变量存储在一个交替列表中:fruit_picking = [strawberry picking, blueberry picking, strawberry picking, blueberry picking, strawberry picking, blueberry picking, strawberry picking]

然后将我的循环作为这样的索引:

代码语言:javascript
复制
i = 0
max_limit = days_picking
    while i < max_limit:
        fruit_picking_plan += f"\nDay {i+1}\n" 
        fruit_picking_plan += f"{fruit_picking[i]}"
        i += 1

请让我知道或给我建议!不确定这是否被认为是硬编码?请不要套圈。

EN

回答 2

Stack Overflow用户

发布于 2022-09-04 03:23:25

你可以用一个测试日数是否相等来决定是采蓝莓还是采草莓:

代码语言:javascript
复制
i = 0
max_limit = 7
fruit_picking_plan = ''
while i < max_limit:
    fruit_picking_plan += f"\nDay {i+1}\n{'blueberry' if i % 2 else 'strawberry'} picking"
    i+= 1

print(fruit_picking_plan)

输出:

代码语言:javascript
复制
Day 1
strawberry picking
Day 2
blueberry picking
Day 3
strawberry picking
Day 4
blueberry picking
Day 5
strawberry picking
Day 6
blueberry picking
Day 7
strawberry picking

注意:为了避免在字符串开头出现不必要的\n,请将所有计划放到一个列表中,然后join表示:

代码语言:javascript
复制
fruit_picking_plans = []
while i < max_limit:
    fruit_picking_plans.append(f"Day {i+1}\n{'blueberry' if i % 2 else 'strawberry'} picking")
    i+= 1

fruit_picking_plan = '\n'.join(fruit_picking_plans)
print(fruit_picking_plan)

输出:

代码语言:javascript
复制
Day 1
strawberry picking
Day 2
blueberry picking
Day 3
strawberry picking
Day 4
blueberry picking
Day 5
strawberry picking
Day 6
blueberry picking
Day 7
strawberry picking
票数 0
EN

Stack Overflow用户

发布于 2022-09-04 22:53:37

有点过分,但您可以使用生成器和not (或@Nick的方法)。而且您可以在不更改主代码的情况下将其调整为更多的选项,这很好。

代码语言:javascript
复制
def generate_fruit():
    opt = True
    while 1:
        if opt:
            yield 'strawberry'
        else:
            yield 'blueberry'
        opt = not opt

所以,如果你做一些像print(list(generate_fruit()))这样的事情,它永远不会结束,因为generate_fruit()会产生无限的果实。不过,只要你能循序渐进,那就没问题了。

代码语言:javascript
复制
max_limit = 7
print(
    "\n".join(
        f"Day {i}\n{fruit} picking"
        for i, fruit in zip(range(1, max_limit + 1), generate_fruit())
    )
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73596579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档