简明python_Day5_运算符、表达式、控制流、函数
由于一些原因突然中午要出去,早上仅剩一点点时间学习了,要提高效率,fighting~
今天内容:运算符、表达式、控制流、函数(局部参数、global参数、return)、docstrings
#######################################################################################
运算符&表达式:
1)+(加) -(减) *(乘) /(除) **(乘方) //(整除) %(取模) <<(左移) >>(右移)
& | ^ ~ (按位与或异或取反) < > >= <= == != (这些都是一样的操作)
逻辑运算符:(ture false 操作):not 布尔非 and 布尔与 or 布尔或 (python中没有异或)
and看作乘法,or看作加法。True看作1,False看作0 。
逻辑运算的短路:如果a=True or xxx. 无论xxx是什么python都不管。
成员运算符:in not in
身份运算符:is:用来检测两个变量是否是同一个变量(val1 is val2).返回布尔值
2)a=a*3 ---> a*=3 这种写法仍然保留
3)python 中没有自增自减:无++或--
4)运算优先级:(越往后越高,同一行一样)多用括号,括号优先级最高
lambda :Lambda 表达式
if - else :条件表达式
or :布尔“或”
and :布尔“与”
not x :布尔“非”
in, not in, is, is not, <, <=, >, >=, !=, == :比较,包括成员资格测试
(Membership Tests)和身份测试(Identity Tests)。
| :按位或
^ :按位异或
& :按位与
<<, >> :移动
+, - :加与减
*, /, //, % :乘、除、整除、取余
+x, -x, ~x :正、负、按位取反
** :求幂
8
运算符与表达式
47
x[index], x[index:index], x(arguments...), x.attribute :下标、切片、调用、属性引
用
(expressions...), [expressions...], {key: value...}, {expressions...} :表示绑定或元
组、表示列表、表示字典、表示集合
#############################运算符和表达式 END###########################################
三种控制流语句(if、for、while):
break正常使用。而且该循环后的else都不会执行!!
continue正常用,跳过当前循环的剩余部分直接到下一次循环
a. if-block+else-block(或elif-block)
补充一个写法: guess = int(input('Enter an integer : '))
内置的 input 函数提供一串打印到屏幕上的字符串并等待用户的输入。一旦我们输入了某些内容并按下键盘上的 enter 键, input() 函数将以字符串的形式返回我们所输入的内容。然后我们通过 int 将这个字符串转换成一个整数并将其储存在变量 guess 中。另一个功能就是数制转换,int(x, base):base默认10,10进制
注意:Python 中不存在 switch 语句。你可以通过使用 if..elif..else 语句来实现同样的事情(在某些情况下,使用一部字典能够更快速地完成)。
b.while:多了个else块
else 代码块在 while 循环的条件变为 False 时开始执行——这个开始的时机甚至可能是在第一次检查条件的时候。如果 while 循环中存在一个 else 代码块,它将总是被执行,除非你通过 break 语句来中断这一循环。进入else块后,else里的不会循环,for中同理。
True 和 False 被称作布尔(Boolean)型,你可以将它们分别等价地视为 1 与 0 。
c.for:
for...in... 对象进行迭代,遍历每个项目,序列中经常使用
for i in range(1, 5): range(a,b,c) 从a到b以c为基数递增,含有a,不含有b。c不写时默认为1。注意:range每次只产生一个数,想把产生的全取出需要用到list()。
list(range(1,5))输出[1,2,3,4] list(range(1,5,2)) 输出 【1,3】
for遍历后(即for结束了)可选择使用else执行
注意和c的区别:
Python 中的 for 循环和 C/C++ 中的 for 循环可以说是完全不同。C# 程序员会注意到 Python 中的 for 循环与 C# 中的 foreach 循环相似。Java 程序员则会注意到它同样与 Java 1.5 中的 for (int i : IntArray) 无甚区别。
在 C/C++ 中,如果你希望编写 for (int i = 0; i < 5; i++) ,那么在 Python 你只需要写下 for i in range(0,5) 。正如你所看到的,Python 中的 for 循环将更加简单,更具表现力且更不容易出错。
关于str.find函数的使用:
find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
str.find(str, beg=0, end=len(string))
- str -- 指定检索的字符串
- beg -- 开始索引,默认为0。
- end -- 结束索引,默认为字符串的长度。
这里利用find函数和continue做一个禁闭词排除:
写代码真好玩~~
#######################################控制流 END#######################################
函数:
1) def mingzi(a, b=1):
内容....
a形参没有值需要用户写入,但是b提供默认值,用户可以不写值
2) 局部参数(local parameter):当你在一个函数的定义中声明变量时,它们不会以任何方式与身处函数之外但具有相同名称的变量产生关系,也就是说,这些变量名只存在于函数这一局部(Local)。这被称为变量的作用域(Scope)。所有变量的作用域是它们被定义的块,从定义它们的名字的定义点开始。
函数内使用的参数,内外都有可能用同一个参数x,但意义不同,而且也不会相互影响,函数内的局部参数不会影响到函数外,见例子:
3 global语句能让你函数中的局部变量即使在函数外也能使用,无论外面是否有同名字的变量。用作global时就不能用作变量,不然会出错,所以用到全局变量的函数不能以此为形参。
但如果global写在外面,那么函数依然需要形参,而且函数内变量还只是个local parameter,如图:
4)return :在函数中常用。函数默认最后有一个return none,return后不加东西也是none。none在 Python 中一个特殊的类型,代表着虚无。举个例子, 它用于指示一个变量没有值,如果有值则它的值便是 None(虚无)。
5)文档字符串(DocStrings):它能够帮助你更好地记录程序并让其更加易于理解。令人惊叹的是,当程序实际运行时,我们甚至可以通过一个函数来获取文档!
文档字符串也适用于后面相关章节将提到的模块(Modules)与类(Class) 。
例如:函数中有一个备注:
'''打印两个数值中的最大数。
这两个数都应该是整数'''
该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束。第二行为空行,后跟的第三行开始是任何详细的解释说明。在此强烈建议你在你所有重要功能的所有文档字符串中都遵循这一约定。
如何打印出这个备注? print(函数名.__doc__)
可以通过使用函数的 __doc__ (注意其中的双下划綫)属性(属于函数的名称)来获取函数 xxx 的文档字符串属性。只消记住 Python 将所有东西都视为一个对象,这其中自然包括函数
只需在程序中包含 help(xxx) 就行了。要记住你可以通过按下 q 键来退出 help 。
########################################函数 END######################################################