python中针对多种条件的While循环

python中针对多种条件的While循环,python,for-loop,while-loop,Python,For Loop,While Loop,我从一个单词列表中生成一个句子,单词列表中穿插着随机字符。下面已经回答了问题,但我希望句子长度在27到31个字符之间。我确实尝试过使用while循环的多种条件,但它生成了超过32个字符的句子 此外,下面的中间字符长度为5个字符,我如何将其编辑为5个或10个字符,以便句子的总长度可以在27-31个字符之间,并仅将这些组合打印到文本文件中 import random import itertools words = ['apples', 'oranges', 'pears', 'cherry',

我从一个单词列表中生成一个句子,单词列表中穿插着随机字符。下面已经回答了问题,但我希望句子长度在27到31个字符之间。我确实尝试过使用while循环的多种条件,但它生成了超过32个字符的句子

此外,下面的中间字符长度为5个字符,我如何将其编辑为5个或10个字符,以便句子的总长度可以在27-31个字符之间,并仅将这些组合打印到文本文件中

import random
import itertools

words = ['apples', 'oranges', 'pears', 'cherry', 'grapes']
letters = ['A', 'B', 'C', 'D']

def combinations(words):
   options = set()
   for perm in list(itertools.permutations(words)):
      s = perm[0]
      i = 1
      while len(s) < 31 or len(s) >27 and i < len(perm):
           s += ''.join(random.choice(letters) for _ in range(5))
           s += perm[i]
           i += 1
      options.add(s)
  return options
print(combinations(words))
随机导入
进口itertools
单词=[“苹果”、“橙子”、“梨”、“樱桃”、“葡萄”]
字母=['A','B','C','D']
def组合(文字):
选项=集合()
对于列表中的排列(itertools.排列(单词)):
s=perm[0]
i=1
而len(s)<31或len(s)>27和i
请修复缩进。一定要修复缩进。我很难分辨哪里是缩进问题,哪里是逻辑问题。我完全明白为什么循环的一部分没有按您认为应该的方式工作,但我无法告诉您如何在尝试读取缩进时修复它。修复了缩进