回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>嘿,伙计们,我在用python编写if语句时遇到了一些麻烦。我简化了这个问题的代码,因为问题的核心保持不变,而且更容易理解:
假设我创建了两个类,一个是苹果类,一个是香蕉类。
它们的属性基本相同(名称、颜色和价格)。你知道吗</p>
<pre><code>class Apple:
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price = price
A1=Apple("Apple1", "red", 5)
A2=Apple("Apple2", "yellow", 3)
Apple_List=[A1, A2]
class Banana:
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price= price
B1=Banana("Banana1","yellow", 5)
B2=Banana("Banana2", "brown", 1)
Banana_List=[B1,B2]
</code></pre>
<p>到目前为止还不错。我想为banana类定义一个方法,首先检查banana的价格是否与apple对象的价格相同。如果是这样的话,香蕉应该取代苹果的名字(同样,在这段代码中它没有任何意义,但是它与我正在工作的实际项目相关)。第二,该方法应该检查香蕉是否与一个苹果对象具有相同的颜色,然后接管该苹果名称(我对该名称使用了elif语句)。方法如下:</p>
<pre><code>def evaluate(self):
for a in Apple_List:
if self.price==a.price:
self.name=a.name
elif self.color==a.color:
self.name=a.name
else:
pass
print(self.name)
</code></pre>
<p>现在,每当我尝试用Banana1运行代码时,我都会得到“Apple2”,尽管Banana1的价格与Apple1相同,因此应该命名为“Apple1”。看起来elif语句是在if语句之前执行的,因为Banana1与Apple2具有相同的颜色并接管其名称。但是if语句不应该优先于elif语句吗?抱歉,如果这个问题有一个明显的解决方案,我对python编程非常陌生。提前感谢您的帮助!完整代码如下:</p>
<pre><code>class Apple:
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price = price
A1=Apple("Apple1", "red", 5)
A2=Apple("Apple2", "yellow", 3)
Apple_List=[A1, A2]
class Banana:
def __init__(self, name, color, price):
self.name = name
self.color = color
self.price= price
def evaluate(self):
for a in Apple_List:
if self.price==a.price:
self.name=a.name
elif self.color==a.color:
self.name=a.name
else:
pass
print(self.name)
B1=Banana("Banana1","yellow", 5)
B2=Banana("Banana2", "brown", 1)
Banana_List=[B1,B2]
B1.evaluate()
</code></pre>