前言现在面试的时候经常会考几个 python 基础的代码题,从答题者的解答代码就很容易看出一个人的代码水平。 交互如何交换a和b的值? 如:a=1, b=2 先看第一个同学的答案 a = 1
b = 2
a = a+b
b = a-b
a = a-b
print(a, b) 上面的解决思路虽然能得到b=1, a=2 但是解决的只是a和b都是数字的情况,解决的是这一个问题,而不是这一类的问题。 接下来看第二个同学的答案 a = 1
b = 2
# 用一个中间变量temp
temp = a
a = b
b = temp
print(a, b) 这一个用中间变量temp,就解决了交换的问题,也是一个很常见的解决问题的思路,只能算是及格,挑不出毛病。 再继续看第三个同学的答案 a = 1
b = 2
a, b = b, a
print(a, b) 很明显第三个同学的答案又简介又优雅,还是很地道的 python 语法,这就是我们说的很 pythonic ,面试官一看就会有好的印象。 三元表达式如果分数(score)小于60分,就认为成绩(result)是”不及格”, 大于等于60分,认为成绩是”及格” 于是这题写个 if 判断就可以了,没什么难度 # 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
score = 90
if score < 60:
result = "不及格"
else:
result = "及格"
print(result) 如果学过其它编程语言应该知道有个三目运算符,如C++ 条件运算符强大而独特,它提供了一种表达简单 if-else 语句的简写方法。该运算符由问号(?)和冒号(:)组成,其格式如下: 表达式 ? 表达式 : 表达式 ; 以下是使用条件运算符的语句示例: x < 0 ? y = 10 : z = 20; 这个语句被称为条件表达式,它由 3 个子表达式组成,使用问号 ? 和冒号 : 分隔。这 3 个表达式分别是:x<0,y = 10 和 z = 20。 上面的条件表达式与以下 if-else 语句执行相同的操作: if (x < 0)
y = 10;else
z = 20; java里面的三元表达式如下 int a = 1;
String b = "";
b = a > 1? "执行表达式1":"执行表达式2"
System.out.println(b) python里面其实也有类似这种语法 # 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
score = 90
result = "不及格" if score < 60 else "及格"
print(result) 也可以在函数返回的时候用 def score_result(score: int):
"""根据分数返回成绩"""
return "不及格" if score < 60 else "及格"
if __name__ == '__main__':
score = 90
print(score_result(score)) 这种三元表达式的写法即简介又优雅,这就很 pythonic ! 列表推导式已知一个列表a = [1, -2, 3, -5, 7], 如何得到一个新的列表,把列表中的负数变成正数,得到[1, 2, 3, 5, 7] 对于这种列表题,很多小伙伴第一想到的解决办法就是先定义一个空的列表,然后for循环,挨个添加进去,如下 a = [1, -2, 3, -5, 7]
b = []
for i in a:
b.append(abs(i))
print(b) 虽然上面的代码也解决的问题,接下来看下更优雅的解决方式,使用列表推导式 a = [1, -2, 3, -5, 7]
b = [abs(i) for i in a]
print(b) 前面说了,面试考察的是你解决的是这一个问题,还是这一类的问题,只要是关于在原来列表基础上生成新的列表,都应该尽量使用列表推导式来解决。 比如上面的题变换下,如果a = [1, -2, 3, -5, 7], 列表中如果有负数,那么就计算它的平方,如得到新的列表[1, 4, 3, 25, 7] # 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
a = [1, -2, 3, -5, 7]
b = [i if i > 0 else i**2 for i in a]
print(b) 列表推导式可以结合上面的三元表达式,于是就可以优雅的解决上面的问题了,这就很 pythonic ! 写代码就像写文章一样,优雅的代码会让人眼前一亮,回味无穷! 2021年第六期《python接口自动化+测试开发》课程,1月9号开学(火热报名中!) 本期上课时间:1月9号-4月18号,每周六、周日晚上20:30-22:30 |
|