【问题标题】:How to iterate following strings in python dynamically or by taking input from user?如何动态地迭代python中的以下字符串或从用户那里获取输入?
【发布时间】:2021-11-06 11:50:05
【问题描述】:

问题来了:

number_of_batches = 8
number_of_dishes = 6

batch_names = batch_1 , batch_2, batch_3,batch_4, batch_5, batch_6, batch_7,batch_8
dish_names = dish_1, dish_2, dish_3, dish_4, dish_5, dish_6

预期输出:

batch_1: dish_1, dish_2, dish_3, dish_4, dish_5, dish_6
batch_2: dish_2, dish_3, dish_4, dish_5, dish_6, dish_1
batch_3: dish_3, dish_4, dish_5, dish_6, dish_1, dish_2
batch_4: dish_4, dish_5, dish_6, dish_1, dish_2, dish_3
batch_5: dish_5, dish_6, dish_1, dish_2, dish_3, dish_4
batch_6: dish_6, dish_1, dish_2, dish_3, dish_4, dish_5
batch_7: dish_1, dish_2, dish_3, dish_4, dish_5, dish_6
batch_8: dish_2, dish_3, dish_4, dish_5, dish_6, dish_1

【问题讨论】:

  • 批次名称是“字符串”吗?是一个列表?因为当我们看到您的代码时,它们是变量,并且输出不清楚

标签: python loops logic


【解决方案1】:

如果都是字符串,请使用deque 来获得漂亮的rotate 方法

from collections import deque

number_of_batches = 8
number_of_dishes = 6
batches = [f"batch_{i + 1}" for i in range(number_of_batches)]
dishes = deque(f"dish_{i + 1}" for i in range(number_of_dishes))

for batch in batches:
    print(batch, ":", *dishes)
    dishes.rotate(-1)
batch_1 : dish_1 dish_2 dish_3 dish_4 dish_5 dish_6
batch_2 : dish_6 dish_1 dish_2 dish_3 dish_4 dish_5
batch_3 : dish_5 dish_6 dish_1 dish_2 dish_3 dish_4
batch_4 : dish_4 dish_5 dish_6 dish_1 dish_2 dish_3
batch_5 : dish_3 dish_4 dish_5 dish_6 dish_1 dish_2
batch_6 : dish_2 dish_3 dish_4 dish_5 dish_6 dish_1
batch_7 : dish_1 dish_2 dish_3 dish_4 dish_5 dish_6
batch_8 : dish_6 dish_1 dish_2 dish_3 dish_4 dish_5

【讨论】:

  • 我们不能按顺序旋转它吗?或任何其他方式来串行旋转它?像 123456 234561 这样吗?
  • 正如您所建议的,批次是随机旋转的,对吗?所以我们不能让它串行吗?
  • @SagarNakade 可以,以-1为参数,看我的编辑
  • 是的!它工作得很好。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2019-07-03
  • 2019-04-11
  • 2011-12-31
  • 1970-01-01
相关资源
最近更新 更多