【问题标题】:How do you randomly assign the value of a variable, to another variable in python?如何将一个变量的值随机分配给python中的另一个变量?
【发布时间】:2015-10-08 02:10:23
【问题描述】:

这让我的大脑崩溃了,我到处搜索都无济于事。这是一个例子:

masNoun = ["Mann", "Junge"]
femNoun = ["Frau"]
neuNoun = ["Madchen", "Kind"]
masArt = ["ein"]
femArt = ["eine"]
firstProSing = ["Ich"]
seconProSing = ["du"]
thirdProSing = ["Er", "Sie"]
firstVerb = ["bin"]
seconVerb = ["bist"]
thirdVerb = ["ist"]

subject = firstProSing or seconProSing or thirdProSing
verb = firstVerb or seconVerb or thirdVerb
object1 = masArt or femArt
object2 = masNoun or femNoun

输出:输出似乎总是第一个变量。我尝试使用如下随机模块:

object1 = random.choice(masNoun or femNoun)

结果还是一样,第一个变量是输出的选项。 “或”函数似乎不适用于我的示例。在这一点上我很难过。任何帮助将不胜感激!

【问题讨论】:

  • 请解释您想要的结果。我不知道你为什么会认为or 会随机做任何事情。
  • 我更新了上面的代码,谢谢!

标签: python


【解决方案1】:

Python 中的 or 关键字用作布尔运算符 - 如果操作数为布尔运算符,它将计算表达式为 TrueFalse

在这种情况下,操作数不是布尔值,因此or 运算符将返回计算结果为True 的任何操作数。请记住,or 运算符以 short-circuit 方式工作。

例如:

>>> a = 2
>>> b = 3
>>> a or b
2
>>> b or a
3

在我看来,您似乎希望变量从给定的可能值列表中获取随机值。

在这种情况下,您想要的是以下方面的内容:

import random

subjects = ['Ich', 'du', 'er', 'sie']

subject = random.choice(subjects)

编辑:根据评论,要使用多个变量列表而不是一个组合列表来执行此操作,您可以执行以下操作:

import random

firstProSing = ["Ich"]
secondProSing = ["du"]
thirdProSing = ["Er", "Sie"]

subject = random.choice(firstProSing + secondProSing + thirdProSing)

+ 运算符将获取列表并将它们组合起来,因此这段代码相当于:

subjects = firstProSing + secondProSing + thirdProSing
# Comment: Here the content of subjects is ['Ich', 'du', 'Er', 'Sie']
subject = random.choice(subjects)

【讨论】:

  • 感谢您的回复。如何使用多个变量而不是一个变量来做到这一点?例如: variable1 = ['Ich', 'du', 'er'] variable2 = ['Mann', 'Frau'] variable3 = random.choice(variable1 or variable2)
  • 酷,我试试看。
  • 有效!感谢您的帮助!
  • or 不评估 to 真或假;它根据第一个参数的真值计算其第一个或第二个参数。
  • 好点,我已经更新了我的答案来解决这个问题。如有任何更正,请随时编辑!
【解决方案2】:

'Or' 语句不是这样的。这是一个布尔值,而不是随机选择。随机选择可以这样完成:

import random

subjects = ["Ich", "du", "Er", "Sie"]
verbs = ["bin", "bist", "ist"]
objects1 = ["ein","eine"]
objects2 = ["Mann", "Junge","Frau"]

subject = random.choice(subjects)
verb = random.choice(verbs)
object1 = random.choice(objects1)
object2 = random.choice(objects2)

【讨论】:

    【解决方案3】:
    in OR clause if leftmost condition is True python will not look further
    
    firstProSing = ["Ich"]
    seconProSing = ["du"]
    thirdProSing = ["Er", "Sie"]
    
    subject = firstProSing or seconProSing or thirdProSing
    
    print(firstProSing)
    
    ['Ich']
    
    # here the first value is empty or False, python looks
    # right and finds that seconProSing is True so its value 'du' is chosen
    
    subject = "" or seconProSing or thirdProSing
    
    print(subject)
    
    ['du']
    

    【讨论】:

    • 请为您的答案添加一些解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2023-02-09
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多