我正在尝试使用elif语句中的数字在if语句中添加列表。如何将它们一起添加以获得结果输出?
["Anna", "Bob", "Kelly", "Morgan", 54]
输出应该类似于:
["Anna", "Bob", "Kelly", "Morgan"]
他们的名字按字母顺序排列,所有年龄都加在一起。
我知道if语句会给我这部分输出:
54
elif声明将给出这部分:
override func draw(_ rect: CGRect) {
var rectPath = UIBezierPath(rect: rect)
UIColor.blue.setFill()
rectPath.fill()
var path = UIBezierPath(ovalIn: rect)
UIColor.white.setFill()
path.fill()
}
我如何将这两者结合在一起?甚至可以组合if语句的输出和elif语句吗?
答案 0 :(得分:1)
您只需添加以下行:
output.append(sumVal)
到return
语句之前的程序,以添加元组奇数部分的总和,如:
def sorting(tup1, tup2):
output = []
sumVal = 0
wholeTup = tup1 + tup2
for i in range(0, len(wholeTup)):
result = " "
if i % 2 == 0 or i == 0:
word = wholeTup[i].title()
output.append(word)
output.sort()
elif i % 2 != 0:
sumVal = sumVal + wholeTup[i]
output.append(sumVal) # append the total age to the final result
return output
然而,您的代码相当不优雅, un-Pythonic 且效率低*。一些想法:
if
;和elif
,因为else
中的条件与elif
中的条件完全相反,因此简单if
就足够了言。您可以使用生成器将整个程序转换为两个语句:
def sorting(tup1, tup2):
wholeTup = tup1 + tup2
return sorted(wholeTup[i] for i in range(0,len(wholeTup),2)) + \
[sum(wholeTup[i] for i in range(1,len(wholeTup),2))]
此处sorted(..)
将捕获生成器 wholeTup[i] for i in range(0,len(wholeTup),2)
的所有元素,并构造一个list
元素已排序。在这里,发生器将发出位于偶数位置的所有元素。
另一方面,sum(..)
将总结由生成器wholeTup[i] for i in range(1,len(wholeTup),2)
产生的元素,并生成年龄的总和(位于奇数位置的元素)。我们使用该结果构造单个列表[..]
,并将追加到sorted(..)
调用的结果。这是我们return
的最终结果。