将random.choice与if语句结合使用

时间:2010-07-14 00:50:46

标签: python

所以我对编程很陌生,我昨天刚开始学习Python,我遇到了一些麻烦。我已经查看了一些教程,并没有想出如何自己回答我的问题,所以我来找你们。

quickList = ["string1", "string2"]
anotherList1 = ["another1a", "another1b"]
anotherList2 = ["another2a", "another2b"]

for i in range(1):
    quick=random.choice(quickList)
    another1=random.choice(anotherList1)
    another2=random.choice(anotherList2)

我想要做的是编写代码,这样如果快速打开string1,它将打印string1然后打印another1,但如果快速生成string2,它将打印string2,然后打印另一个List2的条目。

任何提示?

提前感谢您的帮助!

6 个答案:

答案 0 :(得分:2)

尝试将它们存储在字典中:

d = {
    'string1': ['another1a', 'another1b'],
    'string2': ['another2a', 'another2b'],
}
choice = random.choice(d.keys())
print choice, random.choice(d[choice])

答案 1 :(得分:1)

尝试通过思考逻辑。我已经为您格式化了您的确切字词:

if (quick turns up string1):
    print string1
    print another1 //I assume you mean a string from this list
but if (quick generates string2):
    print string2 
    and then an entry from anotherList2

这是你想要的逻辑,现在你只需要将它转换回python。我会把它留给你。

通常,尝试将if语句与逻辑中的文字选择相关联。它将帮助您编写任何语言的代码。

(另外请注意,为什么它在for循环?如果你只做一次就没有必要。)

答案 2 :(得分:0)

这对你有用:

quickList = ["string1", "string2"]
anotherList1 = ["another1a", "another1b"]
anotherList2 = ["another2a", "another2b"]

for i in range(1):
    if random.choice(quickList) == 'string1':
        another1=random.choice(anotherList1)
    else:
        another2=random.choice(anotherList2)

答案 3 :(得分:0)

if?什么if

quickList = ["string1", "string2"]
anotherList1 = ["another1a", "another1b"]
anotherList2 = ["another2a", "another2b"]

for i in range(1):
    quick = random.choice(list(enumerate(quickList)))
    anothers = [random.choice(x) for x in (anotherList1, anotherList2)]
    print quick[1]
    print anothers[quick[0]]

答案 4 :(得分:0)

你的单词与你的代码不匹配 - “string1”暗示“another1”还是暗示从另一个List1中选择?如果是后者,我会在数据中明确表示快速与其他之间的联系:

combinedList = [ ("string1", ["another1a", "another1b"]),
                 ("string2", ["another2a", "another2b"]) ]

quick,anotherList = random.choice( combinedList )
another = random.choice(anotherList)

答案 5 :(得分:0)

由于您是Python新手,请让我建议另一种方法。

quickList = ["string1", "string2"]
anotherList = {"string1": ["another1a", "another1b"],
               "string2": ["another2a", "another2b"]}

for i in range(1):
    quick = random.choice(quickList)
    print quick
    print random.choice(anotherList[quick])

正如其他人提到的,不确定为什么你的代码在for循环中。你也可以把它拿出来,但是我把它留在了这个例子中。

这样您就可以更轻松地扩展列表,从而避免构建一堆if语句。它可以进一步优化,但试着看看你是否理解这种方法: - )