如何针对值测试多个变量?

我正在尝试创建一个函数,将多个变量与一个整数进行比较,并输出一个由三个字母组成的字符串。我想知道是否有办法将其翻译成Python。所以说:

x = 0y = 1z = 3mylist = []if x or y or z == 0 :
    mylist.append("c")if x or y or z == 1 :
    mylist.append("d")if x or y or z == 2 :
    mylist.append("e")if x or y or z == 3 : 
    mylist.append("f")

这将返回一个列表

["c", "d", "f"]

这样的事情可能吗?


幕布斯7119047
浏览 805回答 5
5回答

RISEBY

你误解了布尔表达式的工作原理; 他们不像英语句子一样工作,并猜测你在谈论所有名字的相同比较。您正在寻找:if x == 1 or y == 1 or z == 1:x并y以其他方式自行评估(False如果0,True否则)。您可以使用针对元组的包含测试来缩短它:if 1 in (x, y, z):或者更好的是:if 1 in {x, y, z}:使用aset来利用常量成本隶属度测试(in无论左手操作数是多少,都需要一定的时间)。使用时or,python将运算符的每一侧视为单独的表达式。表达式x or y == 1首先被视为布尔测试x,如果为False,y == 1则测试表达式。这是由于运营商的优先权。的or操作者具有比较低的优先级==的测试,因此后者被评估第一。但是,即使不是这种情况,并且表达式x or y or z == 1实际上被解释为(x or y or z) == 1相反,这仍然不会按照您的预期执行。x or y or z将评估第一个参数'truthy',例如not False,numeric 0或empty(有关Python在布尔上下文中认为false的详细信息,请参阅布尔表达式)。因此对于值x = 2; y = 1; z = 0,x or y or z将解析为2,因为这是参数中第一个类似真值的值。那2 == 1就是False,即使y == 1会True。这同样适用于逆; 针对单个变量测试多个值; x == 1 or 2 or 3因为同样的原因会失败。使用x == 1 or x == 2 or x == 3或x in {1, 2, 3}。

皈依舞

使用字典结构更容易解决您的问题:x = 0y = 1z = 3d = {0: 'c', 1:'d', 2:'e', 3:'f'}mylist = [d[k] for k in [x, y, z]]

GCT1015

写作的直接方式x or y or z == 0是if any(map((lambda value: value == 0), (x,y,z))):     pass # write your logic.但我不认为,你喜欢它。:)这种方式很难看。另一种方式(更好)是:0 in (x, y, z)BTW很多ifs可以写成这样的东西my_cases = {     0: Mylist.append("c"),     1: Mylist.append("d")     # ..}for key in my_cases:     if key in (x,y,z):         my_cases[key]()         break

犯罪嫌疑人X

如果你非常懒,可以将值放在数组中。如list = []list.append(x)list.append(y)list.append(z)nums = [add numbers here]letters = [add corresponding letters here]for index  in range(len(nums)):     for obj in list:         if obj == num[index]:             MyList.append(letters[index])             break您也可以将数字和字母放在字典中并执行它,但这可能比简单的语句更复杂。这就是你想要更加懒惰的结果:)还有一件事,你的if x or y or z == 0:将编译,但不是以你想要的方式编译。当你只是在if语句中放一个变量时(例子)if b程序将检查变量是否为空。编写上述语句的另一种方法(更有意义)是if bool(b)Bool是python中的一个内置函数,它基本上执行验证布尔语句的命令(如果你不知道那是什么,那么你现在正试着在你的if语句中做:) :)我发现的另一种懒惰方式是:if any([x==0, y==0, z==0])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python