Python 使用Pyton for loop,如何每次从字符串中提取一个字母而不重复

Python 使用Pyton for loop,如何每次从字符串中提取一个字母而不重复,python,anagram,Python,Anagram,''' 创建字符串的随机字谜。 使用choice方法创建一个字符串的5个随机字符 预期结果:由“CREATE”的每个字符组成的字谜 Output : Anagram# 1: taeecr Anagram# 2: aaaete Anagram# 3: acteet Anagram# 4: rcrcee Anagram# 5: aeerca ''' 请尝试以下操作,不要使用random。选择: 将字符串转换为列表 洗牌 重新加入名单 因此: from random import shuff

''' 创建字符串的随机字谜。 使用choice方法创建一个字符串的5个随机字符

预期结果:由“
CREATE
”的每个字符组成的字谜

Output : 
Anagram# 1: taeecr 
Anagram# 2: aaaete 
Anagram# 3: acteet 
Anagram# 4: rcrcee
Anagram# 5: aeerca
'''


请尝试以下操作,不要使用
random。选择

  • 将字符串转换为
    列表
  • 洗牌
  • 重新加入名单
  • 因此:

    from random import shuffle
    word = list('create')
    
    for i in range(5):
        shuffle(word)
        print("Anagram #{}: {}".format(i+1, "".join(word)))
    


    使用
    随机。选择

  • 将原始字符串转换为
    列表
  • 使用
    random。选择
    从列表中获取随机索引
  • 弹出该索引并保存该字符
  • 重复步骤2-3,直到列表为空
  • 重复步骤1-4,直到有5个字谜

  • 请尝试以下操作,不要使用
    random。选择

  • 将字符串转换为
    列表
  • 洗牌
  • 重新加入名单
  • 因此:

    from random import shuffle
    word = list('create')
    
    for i in range(5):
        shuffle(word)
        print("Anagram #{}: {}".format(i+1, "".join(word)))
    


    使用
    随机。选择

  • 将原始字符串转换为
    列表
  • 使用
    random。选择
    从列表中获取随机索引
  • 弹出该索引并保存该字符
  • 重复步骤2-3,直到列表为空
  • 重复步骤1-4,直到有5个字谜

  • 这个问题的措辞特别要求使用
    choice
    方法。@AmitaiIrron,这让我觉得它是用来做作业的。我提供了另一种解决方案,以及使用
    choice
    实现的伪代码。这是一个家庭作业,OP的代码实际上几乎是正确的。剩下要做的唯一一件事就是弹出选定的字母。此外,不需要将原始字符串转换为列表<代码>选择< /代码>将从字符串中选择一个字符,并且<代码> S.Read(C,“1”)/Copy>可以用于弹出。@ AmithayRealon很棒,请点击下面的“Posiple NetryEnter”按钮。谢谢,@ AmithiReunon。我现在明白了。顺便说一句,这不是家庭作业。我正试图从海因霍尔德的书中学习普顿语。:)这个问题的措辞特别要求使用
    choice
    方法。@AmitaiIrron,这让我觉得它是用来做作业的。我提供了另一种解决方案,以及使用
    choice
    实现的伪代码。这是一个家庭作业,OP的代码实际上几乎是正确的。剩下要做的唯一一件事就是弹出选定的字母。此外,不需要将原始字符串转换为列表<代码>选择< /代码>将从字符串中选择一个字符,并且<代码> S.Read(C,“1”)/Copy>可以用于弹出。@ AmithayRealon很棒,请点击下面的“Posiple NetryEnter”按钮。谢谢,@ AmithiReunon。我现在明白了。顺便说一句,这不是家庭作业。我正试图从海因霍尔德的书中学习普顿语。:)顺便说一句,您提到了p=choice(notnal),但choice仅适用于列表。这是25-430-231-333-138-0Btw的结果,您提到了p=choice(notnal),但choice仅适用于列表。这是结果25-430-231-333-138-0
    Anagram #1: aeetrc
    Anagram #2: rcteea
    Anagram #3: eertca
    Anagram #4: tceear
    Anagram #5: erecat
    
    from random import choice
    
    
    
    Orig = 'create'
    OrigL = list(Orig)
    AnagL = []
    
    for a in range(5):
        AnagL = []
        notAnal=Orig
        for i in range(len(notAnal)):
            p = choice(notAnal)
            notAnal=notAnal.replace(p,'',1)
            AnagL.append(p)
        Anag = ''.join(AnagL)
        print('Orig#',a+1,Orig)
        print('Anag#',a+1,Anag,'\n')