布尔值
True 和 False 。 必须首字母大写,其余小写。
>>> spam = True
>>> spam
True
>>> true
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
true
NameError: name 'true' is not defined
>>> True = 2+2
SyntaxError: can't assign to keyword
单纯小写会报错, 而且不能做变量名使用。
比较操作符
比较操作符,比较两个值,求值为一个 布尔值。
- ==
- !=
- <
- <=
- ‘>’
- ‘>=’
>>> 42 == 42
True
>>> 23 > 20
True
>>> 23 != 23
False
>>> 2 != 2
False
>>> 'hello' != 'hello'
False
>>> 'hello' == 'Hello'
False
>>> 'dog' != 'cat'
True
>>> True != False
True
>>> 42 == 42.0
True
<、>、<= 和 >= 操作符仅用于整型和浮点型值
>>> eggCount = 42
>>> eggCount <= 42
True
>>> myAge = 29
>>> myAge >= 10
True
==操作符 和 = 操作符的区别
- ==操作符(等于) 问两个值是否彼此相同
- = 操作符(赋值) 将右边的值放到左边的变量中
布尔操作符
有3个操作符, 分别是 and、or、not 用于比较布尔值。
二元布尔操作符
and 和 or 操作符都接收两个布尔值。
and 相当于java 中的 && 只有两个都为真的时候,才为真。其他情况下都为 False.
or 相当于 java 中的 || 两边只要有一边为真, 则为真。否则为 False
not操作符
not 只用于一个 布尔值。
类似于java中的 ! 操作符。即取反。
>>> not True
False
>>> not False
True
混合布尔和比较操作符
因为比较操作符求值为 布尔值,那么就可以和 布尔操作符混合使用。
>>> (4<5) and (5<6)
True
>>> (4<5) and (9<6)
False
>>> (1==2) or (2==2)
True
控制流元素
条件
前面看到的布尔表达式可以看成条件。它和表达式是一回事。条件总是求值为一个布尔值。
代码块
一组代码放到一起,和java中一样。 根据代码缩进来分辨代码的开始和结束。
1.缩进增加时,代码块开始
2.代码块可以包含其他的代码块
3.缩进减少为零, 或减少为外面包围代码块的缩进代码块就结束了。
#input a string
print('please input your name ')
name = input()
if name == 'Mary':
print('Hello Mary')
print('please input your password ')
pwd = input()
if pwd == '123':
print('access granted')
else:
print('Wrong')
控制流语句
if语句
语句包含以下:
- if关键字;
- 条件(即条件为True 或者 False 的表达式)
- 冒号;
- 在下一行开始,缩进的代码块(称为 if 子句)
比如
if name == 'Mary':
print('Hello Mary')
else语句
同 java中的 else语句,只是没有了{} 改为 缩进 和 : 。
else语句包含:
- else关键字
- 冒号;
- 在下一行开始, 缩进的代码块(称为else子句)。
比如,下面校验密码的逻辑
if pwd == '123':
print('access granted')
else:
print('Wrong')
elif语句
这个实际上和 java中的 else if(boolean) 是一样的。 只是关键字和表现形式不一样。
elif语句包含:
- elif关键字;
- 条件(即求值为 True 或者 False 的表达式)
- 冒号;
- 在下一行开始,缩进的代码块(称为 elif子句)
比如下面校验年龄的逻辑
print('please input your age ')
age = int(input())
if age > 18:
print('you are an adult')
elif age < 18:
print('you are a child')
elif 出现多个条件时,执行处理的顺序需要注意。可能会导致某些条件无法执行到
while 循环语句
可以让一个代码块 一遍又一遍的执行。 和 java中的 while循环是一样的,只是表现形式不同。
while语句包含:
- 关键字
- 条件(求值为True或者 False的表达式)
- 冒号;
- 从新行开始,缩进的代码块(称为 while子句)
比如下面的多次打印:
spam = 0
while spam < 5:
print('hello,spam')
spam = spam+1
name = ''
while name != 'your name':
print('please type your name.')
name = input()
print('hello'+name)
break语句
同java中的break语句一样。 跳出循环。
name = ''
while True:
print('please type your name.')
name = input()
if name == 'Alice':
break;
print('hello'+name)
continue语句
同java中的continue语句一样。如果遇到continue,则后续的不再执行。从新回到循环开始的地方,判断条件。
name = ''
while True:
print('please type your name.')
name = input()
if name != 'Alice':
continue;
print('Hello,Alice,Nice to meet you.')
print('Please input you password')
pwd = input()
if pwd == '123':
break
print('successm')
for循环和 range() 函数
类真 和 类假的值
在用于条件时,0、0.0 和 ‘’(空字符串) 被认为是 False。其他值被认为是True。
for循环语句包含:
- for关键字;
- 一个变量名;
- in 关键字;
- 调用range()方法,最多传入3个参数
- 冒号;
- 从下一行开始,缩进的代码块(称为for子句)
比如:
for i in range(5):
print('hello,world')
range(5) i 分别被设置为 0、1、2、3、4。
计算 1 - 100 的和
total = 0
for i in range(101):
total = total+i
print(total)
range()的开始、停止和步长参数
range()可以传递3个参数。
1个参数的时候,代表的是 上限值.不包括传入的值。
2个参数的时候,第一个是起始值,第二个是上限。
3个参数的时候,第一个是起始值,第二个是上限,第三个是步长
for i in range(0,10,2):
print(i)
打印结果为:
0 2 4 6 8
导入模块
import语句导入模块包含:
- import关键字
- 模块的名称
- 可选的更多模块名称,之间用逗号隔开
在导入一个模块之后,就可以使用该模块中的函数了。
比如:
import random
for i in range(5):
print(random.randint(1,10))
random.randint()函数调用求值为传递给它的两个整数之间的一个随机数。因为 randint()函数属于 random模块。 必须在函数名称之前加上 random. 告诉 python在 random模块中寻找该函数。
导入多个模块
import random,sys,os,math
from import语句
import 语句的另外一种形式包括 from关键字。之后是模块的名称,import关键字和一个星号。
例如 from random import * .
使用这样的import语句,那么在调用 random中的函数时,就不用加 random.前缀。 但可读性会变差。最好还是使用普通的导入方式。
for i in range(5):
print(randint(1,10))
用sys.exit()提前结束程序
这个函数是在 sys 模块中,所有我们在使用前,必须先导入 sys。
import sys
while True:
print('Type exit to exit')
response = input()
if response == 'exit':
sys.exit()
print('You typed '+response)