一、初识运算符
1、表达式和运算符
什么是表达式?
1+2*3 就是一个表达式,这里的加号和乘号叫做运算符,1、2、3叫做操作数。1+2*3 经过计算后得到的结果是7,就1+2*3 = 7。我们可以将计算结果保存在一个变量里,ret = 1-2*3 。 所以表达式就是由操作数和运算符组成的一句代码或语句,表达式可以求值,可以放在“=”的右边,用来给变量赋值。
2、算术运算符 : + - * / //(取整除) %(取余) **
>>> 2+3
>>> 3-2
>>> 2*3
>>> 5/2
2.5
>>> 5//2
>>> 5%2
>>> 2**3
3、赋值运算符: = 、+= -= *= /= %= //= **=
>>> num = 2
>>> num += 1 # 等价于 num = num + 1
>>> num -= 1 # 等价于 num = num - 1
>>> num *= 1 # 等价于 num = num * 1
>>> num /= 1 # 等价于 num = num / 1
>>> num //= 1 # 等价于 num = num // 1
>>> num %= 1 # 等价于 num = num % 1
>>> num **= 2 # 等价于 num = num ** 2
4、比较运算符:>、 <、 >=、 <=、 ==、!= True False简单讲一下
比较运算符是用来做比较的,比较的结果会有两种,分别是成立和不成立,成立的时候,结果是 True,不成立的时候结果是False。
>>> a = 5
>>> b = 3
>>> a > b # 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。
True
>>> a < b # 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。
False
>>> a <= b # 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。
False
>>> a >= b # 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。
True
>>> a == b # 检查,两个操作数的值是否相等,如果是则条件变为真。
False
>>> a != b # 检查两个操作数的值是否相等,如果值不相等,则条件变为真。
True
5、逻辑运算符: not 、and、 or
逻辑运算符是用来做逻辑计算的。像我们上面用到的比较运算符,每一次比较其实就是一次条件判断,都会相应的得到一个为True或False的值。而逻辑运算符的的操作数就是一个用来做条件判断的表达式或者变量。
>>> a > b and a < b # 如果两个操作数都是True,那么结果为True,否则结果为False。
False
>>> a > b or a < b # 如果有两个操作数至少有一个为True, 那么条件变为True,否则为False。
True
>>> not a > b # 反转操作的状态,操作数为True,则结果为False,反之则为True
False
结果为True的时候,我们一般称 结果为真, 逻辑运算符会有一个真值表。
and 真值表 or 真值表 not 真值表
6、成员运算符: not in 、in (判断某个单词里是不是有某个字母)
成员运算符用来判断一个元素是否是另一个元素的成员。 比如说我们可以判断 “hello” 中是否有 “h”, 得到的结果也是True 或者 False。
>>> "h" in "hello" # 这里的意思是 “h” 在“Hello” 中,判断后结果为True
True
>>> "h" not in "hello" # 这里的意思是 “h” 不在“Hello” 中,判断后结果为False
False
7、身份运算符: is、is not(讲数据类型时讲解,一般用来判断变量的数据类型)
用来判断身份。
>>> a = 123456
>>> b = a
>>> b is a #判断 a 和 b 是不是同一个 123456
True
>>> c = 123456
>>> c is a #判断 c 和 a 是不是同一个 123456
False
>>> c is not a #判断 c 和 a 是不是不是同一个 123456
True
这里我们首先将123456赋值给a,后有将a赋值给b, 这样其实是 a和b 的值都是123456, 但是后面c的值也是123456,为什么 第一次a is b 的结果为True ,c和 a 的结果为False 呢?
原因是这样的: 我们知道程序是运行在内存里的,第一次 我们将123456赋值给a的时候,其实是在内存里开辟了一块空间,将123456放在这块空间里,为了找到这里的123456, 会有一个指向这块空间的地址,这个地址叫做内存地址,是123456存储在内存中的地址。a其实指向的就是存储123456的内存空间的地址。执行了b=a,就是让b指向的地址和a一样。之后我们执行了 c = 123456 ,这里就会再开辟一块内存空间,并将指向该空间的内存地址赋值给c ,这样的话 ,a和b 指向的是同一个123456, c 指向的是另外一个123456 。
8、优先级
运算符那么多,优先级记不住怎么办? 使用小括号。通过使用小括号,我们就可以很方便的进行优先级的区分。
二、Python注释
1、注释有两种方式:
单行注释 #
多行注释 """ 内容"""
作用:
1. 避免自己忘了写的代码是做什么的——
2. 写给人看的
3. 不要去注释你代码做了什么,而要去 注释 我的代码为什要这么做。
2、特殊的注释
Linux/Unix用户需要注意的内容:
在某些Python文件中我们会看到文件的第一行是
#!/usr/bin/env python
这一行是一个特殊的注释,他有特殊的作用,被称为Shebang,一般在linux/Unix中出现。
Shebang是一个由 “#” 和 “!” 构成的字符串行(#!),她出现在文件的第一行。当文件中出现Shebang 时,Linux/Unix 操作系统的的程序载入器会分析Shebang的内容,将之后的内容作为解释器命令,并调用该执行,将载有Shebang的文件路径作为解释器的参数。
在这里 #! 先用于帮助内核找到Python解释器,但是在导入模块的时候将会被忽略,因此,只有在直接执行的文件才有必要加入#! 。
三、如何获取用户的输入
我们前面写的程序,并没有和用户交互,程序运行后,就等待结果的输出。而有些程序是需要用户输入才能继续向下执行。
Python中获取用户输入的语句——input()
name = input()
print(name)
name = input("请输入您的姓名:")
四、条件判断
1、流程控制 之if语句
if 判断条件:
执行语句……
else:
执行语句……
if else 的流程图
2、if 语句有三种结构
# 第一种
if 条件:
pass
# 第二种
if 条件:
pass # pass语句用来占为,表示什么都不做
else:
pass
# 第三种
if 条件1:
pass
elif 条件2:
pass
elif 条件3:
pass
else:
pass
注:
缩进——推荐四个空格 (使用2个、3个空格或者tab都是可以得)
不要tab与空格混用
不同软件对空格的显示逻辑总是一样的,但是对于tab却五花八门。
有的软件把Tab展开成空格,有的不会展开。有的Tab宽度是4,有的宽度是8,
这些不一致会使得代码混乱,尤其是靠缩进表示块结构的Python。
五、python 循环
1、流程控制——while循环
while 流程图
1)基本循环
2)break
break用于退出while循环体
while True:
print("a")
break
print("b")
这里当打印完“a”时,遇到break就会跳出整个循环,不会去打印“b”,也不会循环打打印“a”
3)continue
'''
continue用于退出本次循环,继续下一次循环
'''
while True:
print("a")
continue
print("b")
这里当打印完"a"时,会跳出本次打印“b”的循环,继续下一次的循环,即每次循环都会如此,所以就一直循环的打印“a”
4)while循环中的else:
# while循环结构
while 判断条件:
执行语句……
else:
执行语句……
while循环中的else语句比较特殊,这里的else语句,只有在循环正常结束的时候才会执行,什么意思呢?意思就是说如果我们的while循环在执行过程中中断了,也就是说执行了break语句,这里的else语句就不会被执行。
举例子(详见代码说明):
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 # @Time : 2018/4/13 22:52
4 # @Author : EOS666
5 # @Site :
6 # @File : login_while.py
7 # @Software: PyCharm
8
9 _user = "lj"
10 _passwd = "abc123"
11
12 counter = 0
13 while counter < 3:
14 username = input("Username:")
15 password = input("Password:")
16 if username == _user and password == _passwd:
17 print("Welcome %s login ......" % _user )
18 break # for 过后,不会执行最后面的 else
19 else:
20 print("Invalid username or password !")
21
22 counter += 1
23
24 if counter == 3:
25 keep_going_choice = input("还想玩么?[y/n]")
26 if keep_going_choice == "y":
27 counter = 0
28
29 else: # 只要上面的 for 循环正常执行完毕,中间没有被打断,就会执行else语句
30 print("你尝试的次数太多了,请稍后再试!!!")
View Code
2、while 和 if ,猜数字游戏
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/4/11 22:11
# @Author : EOS666
# @Site :
# @File : guess_num.py
# @Software: PyCharm
init_num = 8
num = int(input("请输入一个大于0的整数:"))
while init_num != num:
if num > init_num:
print("哥,大了大了。。。")
else:
print("哥,小了小了。。。")
num = int(input("请重新输入一个大于0的整数:"))
print("恭喜你,答对了!")
5、流程控制——for循环
# for循环结构一
for var in sequence:
statements(s)
# for 循环示例
for i in range(10):
print(i)
和while循环一样,在for循环中也可以使用break和continue语句,两者效果一样。