##认识个新朋友
>>> input("请输入你的姓名:")
请输入你的姓名:白加黑
'白加黑'
>>>
>>>help(input)
input(prompt=None, /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
解读一下,input([prompt])如果存在 prompt 实参(必须是字符串类型哦),则将其写入标准输出,末尾不带换行符。接下来,该函数从输入中读取一行,将其转换为字符串(除了末尾的换行符)并返回。
来吧展示:
>>> a=input()
1000
>>> a
'1000'
>>> b=input("请输入一个数字:")
请输入一个数字:250
>>> b
'250'
>>>
>>> type(a)
<class 'str'>
>>> type(b)
<class 'str'>
我用变量接收了input输入后返回的值,并且这个值一定是个字符串类型。
tips: nix:Ctrl-D, Windows: Ctrl-Z(如果出错请输入ctrl+D,或者win系统输入ctrl+z)
我们要编写一个程序如何控制呢,大家都知道,计算机内部是用二进制,也就是0和1来进行计算的,我们如何控制程序的流程呢,这就产生了逻辑值检测,就是检测对与错,真与假,是和否,来确定下个流程走到哪里。
“布尔”数据类型
只有两种值:True 和 False。Boolean(布尔)的首字母大写,因为这个数据类型,是根据数学家 George Boole 命名的。在作为 Python 代码输入时,布尔值 True 和 False不像字符串,两边没有引号,它们总是以大写字母 T 或 F 开头,
看官方文档解释:
任何对象都可以进行逻辑值的检测,以便在 if 或 while 作为条件或是作为下文所述布尔运算的操作数来使用。一个对象在默认情况下均被视为真值,除非当该对象被调用时其所属类定义了 bool() 方法且返回 False 或是定义了 len() 方法且返回零。
1 下面基本完整地列出了会被视为假值的内置对象:
• 被定义为假值的常量: None 和 False。
• 任何数值类型的零: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
• 空的序列和多项集: ‘’, (), [], {}, set(), range(0)
产生布尔值结果的运算和内置函数总是返回 0 或 False 作为假值,1 或 True 作为真值,除非另行说明。(重要例外:布尔运算 or 和 and 总是返回其中一个操作数。)
布尔操作符
布尔运算 — and, or, not
这些属于布尔运算,按优先级升序排列:
运算 结果: 备注
x or y if x is false, then y, else x (1)
x and y if x is false, then x, else y (2)
not x if x is false, then True, else False (3)
注释:
(1) 这是个短路运算符,因此只有在第一个参数为假值时才会对第二个参数求值。
(2) 这是个短路运算符,因此只有在第一个参数为真值时才会对第二个参数求值。
(3) not 的优先级比非布尔运算符低,因此 not a == b 会被解读为
not (a == b) 而 a == not b 会引发语法错误。
and 和 or 操作符总是接受两个布尔值(或表达式),所以它们被认为是“二元”操作符。如果两个布尔值都为 True,and 操作符就将表达式求值为 True,否则求值为 False。在交互式环境中输入某个使用 and 的表达式,看看效果。
表达式 求值为
True and True True
True and False False
False and True False
False and False False
只要有一个布尔值为真,or 操作符就将表达式求值为 True。如果都
是 False,所求值为 False。
表达式 求值为
True or True True
True or False True
False or True True
False or False False
和 and 和 or 不同,not 操作符只作用于一个布尔值(或表达式)。not 操作符求值为相反的布尔值。
表达式 求值为
not True False
not False True
**
“比较操作符”比较两个值,求值为一个布尔值。
**
运算 含意
< 严格小于
<= 小于或等于
> 严格大于
>= 大于或等于
== 等于
!= 不等于
is 对象标识
is not 否定的对象标识
还有两种具有相同语法优先级的运算 in 和 not in,
看例子如下:
>>> 42 == 42
True
>>> 42 == 99
False
>>> 2 != 3
True
>>> 2 != 2
False
>>> 'hello' == 'hello'
True
>>> 'hello' == 'Hello'
False
>>> 'dog' != 'cat'
True
>>> True == True
True
>>> True != False
True
>>> 42 == 42.0
True
>>> 42 == '42'
False
请注意,整型或浮点型的值永远不会与字符串相等。表达式 42 == '42’求值为False 是因为,Python 认为整数 42 与字符串’42’不同。另一方面,<、>、<=和>=操作符仅用于整型和浮点型值。
操作符的区别:
你可能已经注意到,==操作符(等于)有两个等号,而=操作符(赋值)只有一个等号。这两个操作符很容易混淆。只要记住:
操作符(等于)问两个值是否彼此相同。
=操作符(赋值)将右边的值放到左边的变量中。
为了记住谁是谁,请注意操作符(等于)包含两个字符,就像!=操作符(不等于)包含两个字符一样。
混合布尔和比较操作符
既然比较操作符求值为布尔值,就可以和布尔操作符一起,在表达式中使用。回忆一下,and、or 和 not 操作符称为布尔操作符是因为,它们总是操作于布尔值。虽然像 4 < 5 这样的表达式不是布尔值,但可以求值为布尔值。在交互式环境中,尝试输入一些使用比较操作符的布尔表达式。
>>> (4 < 5) and (5 < 6)
True
>>> (4 < 5) and (9 < 6)
False
计算机将先求值左边的表达式,然后再求值右边的表达式。知道两个布尔值后,它又将整个表达式再求值为一个布尔值。
>>> 2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
True
和算术操作符一样,布尔操作符也有操作顺序。在所有算术和比较操作符求值后,Python 先求值 not 操作符,然后是 and 操作符,然后是 or 操作符。
这个时候你可能会觉得很简单,都是常识,然而也许事实不像你想的那样:
a= 3 and 4 a的值是多少
a= 0 and 4 a的值是多少
a= 0 or 1 a的值?
a= "abcd" or 0 a的值?
a= not 0 a?
>>> a=3
>>> b=4
>>> c= a-b or b-a c?
>>> c = not a-b and b+a
>>> c
希望上面的几个问题,能引发你更深的思考,搞清楚,搞透,这就是基础,请读者认真理解,下一讲,我们将通过一个例子,来学习python的代码书写格式,和控制流语句。
**
不积跬步,无以至千里.不积小流,无以成江海
**