子非鱼,安知鱼之乐!
本章主题:
运算符
流程控制
函数
a='少年'b='下山'if a < b : print("我还是从前那个少年")else : print("还在南方等我下山的我的人叫小落")
猜猜输出谁的歌词 ? [少年] : [下山]
赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,如 加减乘除、函数调用、逻辑运算等。
=
是 Python 中最常见、最基本的赋值运算符,用来将一个表达式的值赋给另一个变量
#将字面量(直接量)赋值给变量n1 = 100f1 = 3.1415927url = "http://www.baidu.com"#将一个变量的值赋给另一个变量n2 = n1f2 = f1#将某些运算的值赋给变量sum1 = 25 + 46 sum2 = n1 % 6s2 = str(1234) s3 = str(100) + "abc"
Python 中的赋值表达式也是有值的,它的值就是被赋的那个值,或者说是左侧变量的值;如果将赋值表达式的值再赋值给另外一个变量,这就构成了连续赋值。请看下面的例子:
a = b = c = 100print(a)print(b)print(c)
=
还可与其他运算符(包括算术运算符、位运算符和逻辑运算符)相结合,扩展成为功能更加强大的赋值运算符,如表 1 所示。扩展后的赋值运算符将使得赋值表达式的书写更加优雅和方便。
java里循环里面常用的 ++ ,没发现 试了一下会报错: d++
1.4 算术运算符
比较陌生的是 is 和 is not
is 是判断两个变量所引用的对象是否相同,如果相同则返回 True,否则返回 False。
is not 判断两个变量所引用的对象是否不相同,如果不相同则返回 True,否则返回 False
== 和 is 的区别== 用来比较两个变量的值是否相等,而 is 则用来比对两个变量引用的是否是同一个对象
Python 逻辑运算符用于操作 bool 类型的表达式,执行结果也是 bool 类型,这两点其实都是错误的! Python 逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是 bool 类型;同时,逻辑运算的结果也不一定是 bool 类型,它也可以是任意类型。请看下面的例子:
print(100 and 200)print(45 and 0)print("" or "http://c.biancheng.net/python/")print(18.5 or "http://c.biancheng.net/python/")
输出结果:
2000http://c.biancheng.net/python/18.5
本例中 and 和 or 运算符操作的都不是 bool 类型表达式,操作的结果也不是 bool 值。
在 Python 中,and 和 or 不一定会计算右边表达式的值,有时候只计算左边表达式的值就能得到最终结果。另外,and 和 or 运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。以上两点极其重要,了解这两点不会让你在使用逻辑运算的过程中产生疑惑。
对于 and 运算符,两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,所以 Python 按照下面的规则执行 and 运算:
如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是假,此时 and 会把左边表达式的值作为最终结果。
如果左边表达式的值为真,那么最终值是不能确定的,and 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。
对于 or 运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,所以 Python 按照下面的规则执行 or 运算:
如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是真,此时 or 会把左边表达式的值作为最终结果。
如果左边表达式的值为假,那么最终值是不能确定的,or 会继续计算右边表达式的值,并将右边表达式的值作为最终结果。
相当于java的 ? :
假设 有两个数字,我们希望获得其中较大的一个,那么可以使用 if else 语句,例如:
if a>b: max = a;else: max = b;
Python 提供了一种更加简洁的写法
# 如果 a 大于 b 则f返回a 否则f返回 b max = a if a > b else b
exp1 if contion else exp2
condition 是判断条件,
exp1 和 exp2 是两个表达式。
如果 condition 成立(结果为真),就执行 exp1,
如果 condition 不成立(结果为假),就执行 exp2,
前面的语句max = a if a>b else b的含义是:如果 a>b 成立, 就把 a 作为整个表达式的值,并赋给变量 max;如果 a> b 不成立, 就把 b 作为整个表达式的值,并赋给变量 max。
小伙伴们, 不用记,我也记不
搞不清楚就用小括号,最清爽 !
虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换
(二)流程控制
a=18b=20if a > b: print("我还是从前那个少年") #输出这个 else : print("还在南方等我 下山的 我的人叫小落。")
字符串比较的输出结果:
小伙伴们,刚开始学,上面代码一样要注意了:
相同代码块要缩进,默认是4个空格 。
两个print输出都是缩进4个空格
(英文输入法的空格,不建议用Tab键缩进)
2.2 python嵌套 :if elif else 语句
注意:if else 嵌套和java不一样
年龄的定义 一般来说:0(初生)-6岁为婴幼儿;7-12岁为少儿;13-17岁为青少年;18-45岁为青年;46-69岁为中年;>69岁为老年
age = float(input("输入年龄:")) # age= 18 if age <= 6 : print('婴幼儿') elif age > 6 and age <= 12 : print("少儿") elif age > 12 and age <= 17 : print("青少年") elif age > 17 and age <= 45 : print("青年") else: print("中老年")
2.3 while 循环
不解释了,直接上代码:
# 循环的初始化条件num = 1# 当 num 小于等于10时,会一直执行循环体while num <= 10 : print("num=", num) # 迭代语句 num += 1print("循环结束!")
输出:
2.4 for 循环
和 java 大不一样 ,for循环是in一个数组值
print("计算 1+2+...+10 的结果为:")#保存累加结果的变量result = 0#逐个获取从 1 到 100 这些值,并做累加操作for i in range(11): result += iprint(result)
上面代码中,使用了 range() 函数,此函数是 Python 内置函数,用于生成一系列连续整数,多用于 for 循环中
range()函数 左开右关 (小红语录)
2.5 break 跳出循环
break 语句可以立即终止当前循环的执行,跳出当前所在的循环结构。无论是 while 循环还是 for 循环,只要执行 break 语句,就会直接结束当前正在执行的循环体。
2.6 continue 循环下一次
终止执行的本次循环 ,直接从下一次循环继续执行。
好多言语通用的,java用法也一样,break 和 continue
(三)函数 Function
定义关键字: def
将常用的代码以固定的格式封装(包装)成一个独立的模块,只要知道这个模块的名字就可以重复使用它,这个模块就叫做函数(Function)。
函数定义:
def 函数名(参数列表): //实现特定功能的多行代码 [return [返回值]]
我们把判断年龄组的写成方法
#函数定义def getAgeRange(age): # age= 18 ageRange='' if age <= 6 : ageRange='婴幼儿' elif age > 6 and age <= 12 : ageRange="少儿" elif age > 12 and age <= 17 : ageRange="青少年" elif age > 17 and age <= 45 : ageRange="青年" else: ageRange="中老年" return ageRange#函数调用n2=getAgeRange(20)print(n2)
函数的调用结果,参数给 20
通过调用 Python 的 help() 内置函数或者 __doc__ 属性,可以查看某个函数的使用说明文档。事实上,无论是 Python 提供给我们的函数,还是自定义的函数,其说明文档都需要设计该函数的程序员自己编写。 函数的说明文档,本质就是一段字符串,只不过作为说明文档,字符串的放置位置是有讲究的,函数的说明文档通常位于函数内部、所有代码的最前面。
各自的作用: __doc__:获取到注释内容 __name__:获取到函数的名称 __file__:获取到当前的文件路径
#函数定义def getAgeRange(age): ''' 年龄分类说明:小于6岁是婴幼儿期 ''' # age= 18 ageRange='' if age <= 6 : ageRange='婴幼儿' elif age > 6 and age <= 12 : ageRange="少儿" elif age > 12 and age <= 17 : ageRange="青少年" elif age > 17 and age <= 45 : ageRange="青年" else: ageRange="中老年" return ageRange#函数调用# n2=getAgeRange(20)print(getAgeRange.__name__) #获取函数名print(getAgeRange.__doc__) #获取注释内容
输出结果:
3.3 函数的全局变量:
在函数体内定义全局变量。即使用 global 关键字对变量进行修饰后,该变量就会变为全局变量。在函数体外部也可以使用。
函数体内部的变量,默认情况下都是局部变量,函数体外都无法使用,除非前面加上 global 变成全局变量 。
#段誉def duanyu(gf): global gongfu #全局变量 gongfu = "六脉神剑" print("函数体内访问:",gf) print('函数体外访问:',gongfu)
直接运行以上代码会报错:原因是 函数没有调用,没有运行,没有初始化定义,直接使用 gongfu 会报错: 全局变量没有定义
调用函数一次,全局变量 输出成功:
留作业:函数的高级应用:如何返回多个值
看往期:
python-基础篇(相忘于江湖)
大数据:
大数据-数据可视化
大数据-啤酒和尿布(UserCF和ItemCF)
极简--大数据原理介绍