返回Python的上一个命令

时间:2018-11-29 13:31:31

标签: python python-3.4

我正在一个愚蠢的项目中尝试打印尽可能多的代码。我想要它做的是接受输入,将其分成一个列表,然后遍历该列表中的每个字母。然后,它从0到26中选择一个随机数,并查看它所在的字母是否与单独列表中的字母匹配,如果匹配,则将其附加到另一个列表中。很难解释,所以这是我当前的代码(未完成):

import random 

alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

inserted_words = []

target_word = input('what word do you want printed? (caps only): ')

target_word.split()

class Transform(object):
    def __init__(self, letter, number):
        self.letter = letter
        self.number = number
    def RandomChoose(self, insert):
        let1 = random.randint(0, 26)
        let2 = alphabet[let1]
        if let2 == insert:
            inserted_words.append(insert)
        else:
            RandomChoose()

for x in target_word:
    y = alphabet.index(x)
    x = Transform(x, y)
    x.RandomChoose(x)

print(inserted_words)

但是有一个问题。在这里:

def RandomChoose(self, insert):
        let1 = random.randint(0, 26)
        let2 = alphabet[let1]
        if let2 == insert:
            inserted_words.append(insert)
        else:
            RandomChoose()

我希望代码从我的“字母”列表中选择一个随机字母,然后查看它是否与输入匹配。如果没有,我希望它从头开始重复代码。因此,如果输入为A且随机字母为B,它将重复;如果随机字母为Q,它将再次重复。依此类推,直到它随机选择A,然后将其附加到'inserted_words'。我尝试了递归,但无济于事。如果您知道该怎么办,请告诉我!

1 个答案:

答案 0 :(得分:0)

尝试一下:

def RandomChoose(self, insert):
    letter = None
    while letter != insert:
        letter = random.choice(alphabet)
    inserted_words.append(insert)

您也可以将字母和插入的单词声明为类的元素,然后从那里访问它们,因为否则RandomChoose作为类函数是没有用的。

此外,您没有将target_word.split()分配给任何内容。尝试:

target_word = target_word.split()

也与问题不直接相关,但是您可以使用target_word.upper()将输入大写-这样就不必将输入限制为已经大写的单词。