python - 在 Python 中返回上一个命令
问题描述
我正在做一个愚蠢的项目,我尝试用尽可能多的代码打印一些东西。我想要它做的是接受输入,将其拆分为一个列表,然后遍历该列表中的每个字母。然后它从 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”。我尝试了递归,但无济于事。如果你知道该怎么做,请告诉我!
解决方案
尝试这个:
def RandomChoose(self, insert):
letter = None
while letter != insert:
letter = random.choice(alphabet)
inserted_words.append(insert)
您也可以将Alphabet 和inserted_words 声明为类的元素并从那里访问它们,因为否则 RandomChoose 没有用作类函数。
此外,您没有分配target_word.split()
任何东西。尝试:
target_word = target_word.split()
也与问题没有直接关系,但您可以将输入大写target_word.upper()
- 这样您就不必将输入限制为已经大写的单词。
推荐阅读
- python - jupyter lab 上未显示的绘图和小部件
- powershell - 要求用户填充字段(Powershell)
- layout - qiskit 的转译器中的 DenseLayout 是如何工作的?
- android - 我无法解决此错误 [android]
- laravel - Laravel vue:我无法获取与模型之间的关系相关的对象
- amazon-web-services - 如果我在 AWS 组织中创建 AWS 账户,我可以从拥有该组织的根账户中删除它吗?
- mysql - 获取 id 最高的行
- c# - Xamarin - 应用程序外部的浮动按钮
- php - 在 PHP 中使用带有特殊内容的 SQL 中的函数
- openvpn - 与 SDK 29 兼容时,openVPN 无法在 androidstudio 中的 Android 10 上运行