Python学习日志(二)
在网易云课堂看到小甲鱼的python视频,想起以前看就是看他的视频学C的虽然后来不了了之都怪我自己啦,于是决定跟着这个视频来学python啦!
- IDLE
IDLE其实是一个python shell ,是一个通过键入文本与程序交互的途径。
- 用python写一个猜数字小游戏
按F5可以直接运行
python程序真的戳中老夫的心了,语句后面不需要";",不需要声明变量,程序段也不需要{},嗨森!
需要注意:
- 虽然变量没有限定类型,但是input函数返回的类型是字符串,所以temp是字符串型,要强制转换成int。强制转换和其它语言不太一样,括号括的是变量,不是类型。
- 虽然程序段不需要{},但是要特别注意缩进,if语句和else后面都有":",":"后回车一般会自动缩进,手动缩进当然用Tab啦。不缩进会报错哒,没有规矩不成方圆嘛。
我们用xmind来画画程序流程图吧:
好丑啊我不管。就是一个简单的程序分支。
- BIF(built in function)内置函数
输入dir(__builtins__),回车查询python的内置函数;
输入help(函数名),回车查询函数相关信息。
- 变量
python变量的一些规则:
- 变量要先赋值再使用
- 变量名可以包括字母、数字、下划线,但变量名不能以数字开头(几乎学过的语言都是酱紫啊,因为它们都是C的延续,所以真的要注意养成书写规范的好习惯啊)
- 变量名可大写,可小写,但是python会区分大小写,Python和python是不一样的!
如图,变量是可以改变的,变量不需要声明,它可以是任何类型,这点上面有提到。
另外需要注意,字符串可以用""也可以用''括起来,用''时,如果字符里出现',要在其前面加转义符\,否则会报错。
如图,字符串里出现反斜杠可能会出错,当然我们可以用反反斜杠来规避这种错误,如果反斜杠很多,可以在字符串前面加r转换成原始字符串。
注意原始字符串末尾加\会出错,可以这样灵活处理:
得到一个跨越多行的字符串,可以使用三重引号字符串:
- 对之前的小游戏的改进
改进点:
- 引入random模块,由系统给定一个数字,而不是由编程人员设定。
- 用户只有三次机会,三次猜错立即结束游戏并且有相应提示。
这是我自己写的代码,不是参考答案,实现了好开心哈哈。这里的新知识点有:
- 引入random模块要在程序之前 import 它。
- randint()是random模块内的函数,它返回一个随机的整数,这里(1,10)是设定的范围。
- and 逻辑操作符,可以将任意表达式连接在一起,并得到一个boolean类型变量。
- 补充
语句过长可以使用反斜杠或者括号分解成几行
在同一行可以书写多个语句,用;隔开
前面说到and逻辑操作符,python提供了3个逻辑操作符,and、or和not。
and 和 or 都使用short-circuit逻辑,并返回决定结果的操作数——而不是返回Boolean量。那么为什么我们前面返回了Boolean量呢?我们来对比这两个例子就知道了:
我们可以看到,如果and在布尔上下文中,也就是说前后是判断条件,那么结果也返回布尔值,即TRUE或FALSE。
如果and前后是数字,那么表达式返回一个操作数,注意区别,C语言中&&操作符的结果是0或1。
同理可得,or在布尔上下文中,也返回TRUE或FALSE,否则返回操作数。
至于这个操作数怎么得来的我们就要理解一下懒逻辑(也就是short-circuit逻辑)了。
对于and来说,如果第一个操作数为假,那么就立即返回假。同样对于or来说,只要第一个为真,那么立即返回。(与是有0则0.或是有1则1)我们来举一斤栗子:
这就是python的短路逻辑(short-circuit logic)
逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。这么说可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表达式就会立刻返回 False,而不用去管 y 变量的值。实际上,Python 的做法是如果 x 为假,表达式会返回 x 的值(0),否则它就会返回 y 的值。这种行为同样也应用于 or 操作符。
- 数据类型转换——int()、float()、string()互相转换
int()→float():直接在后面叫 .0
float()→int():直接截断,不会四舍五入
可以这样实现四舍五入:
先给浮点数+0.5再转换
str()→int()、float():要注意string必须是由数字组成的,另外也要注意变量不能用str命名,后果很严重啊。
int()、float()→str():直接加' '
- 一些字符串的拓展函数
s.isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False。
s.isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False。
s.isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False。
s.islower() 所有字符都是小写,为真返回 Ture,否则返回 False。
s.isupper() 所有字符都是大写,为真返回 Ture,否则返回 False。
s.istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False。
s.isspace() 所有字符都是空白字符,为真返回 Ture,否则返回 False。
注意!!!这里的s是字符串。
我们可以用s.isdigit()来改进我们之前的小游戏:
我改了好久想哭,不过基本满意了,输入除数字外的字符或者超出1-10都会报错。但是还有待改善的点:
在判断数字小了还是大了之后重新输入的,就不会进行输入报错判断了。
其实逻辑也有点乱...
但是不打算一头撞死了,等我以后想到了在改进。
- type()
返回参数类型
- isinstance()
isinstance(obj,class_or_tuple,/):返回对象是否是类或其子类的实例。
用这个函数可以判断某一个变量是不是某个类型。