在一个循环中,在一周中不同的日子中,在两个变量之间交替的最佳方法是什么?
例如,假设一个人在一周内计划了草莓采摘和蓝莓采摘,两者在需要打印的变量中都有不同的过程。如果选择采摘三天,那么顺序应该是:草莓采摘,蓝莓采摘,草莓采摘。如果答案是7天,那么所有7天都应该打印如下:草莓采摘,蓝莓采摘,草莓采摘。
到目前为止,我知道如何做到这一点的唯一方法是将变量存储在一个交替列表中:fruit_picking = [strawberry picking, blueberry picking, strawberry picking, blueberry picking, strawberry picking, blueberry picking, strawberry picking]
然后将我的循环作为这样的索引:
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请让我知道或给我建议!不确定这是否被认为是硬编码?请不要套圈。
发布于 2022-09-04 03:23:25
你可以用一个测试日数是否相等来决定是采蓝莓还是采草莓:
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)输出:
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表示:
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)输出:
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发布于 2022-09-04 22:53:37
有点过分,但您可以使用生成器和not (或@Nick的方法)。而且您可以在不更改主代码的情况下将其调整为更多的选项,这很好。
def generate_fruit():
opt = True
while 1:
if opt:
yield 'strawberry'
else:
yield 'blueberry'
opt = not opt所以,如果你做一些像print(list(generate_fruit()))这样的事情,它永远不会结束,因为generate_fruit()会产生无限的果实。不过,只要你能循序渐进,那就没问题了。
max_limit = 7
print(
"\n".join(
f"Day {i}\n{fruit} picking"
for i, fruit in zip(range(1, max_limit + 1), generate_fruit())
)
)https://stackoverflow.com/questions/73596579
复制相似问题