05.Python学习笔记之-条件、循环和其他语句
import语句
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
python的标准库地址:https://docs.python.org/zh-cn/3/library/index.html
第三方模块集合:https://pypi.org/
查询模块及模块里的函数使用方法
dir的作用:
shell提供在>>>提示窗口使用的两个交互式函数。dir会显示Python中与某个东西相关的所有属性,包括模块
help的作用:
请求相关模块中相关函数的帮主文档 help(os.kill) 就是请求os模块中kill函数的帮主文档
>>> dir(os) ['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_AddedDllDirectory', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'add_dll_directory', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write'] >>> help(os.kill) Help on built-in function kill in module nt: kill(pid, signal, /) Kill a process with a signal.
别样的赋值
1.序列解包
>>> x,y,z=1,2,3 >>> print(x,y,z) 1 2 3
可以多个赋值同时操作。
2.链式赋值
>>> x=y=z=10 >>> x 10 >>> y 10 >>> z 10
可以通过等式为多个变量赋同一个值,这种方法叫坐链式赋值。
3.增量赋值
x=x+1 写成 x+=1 这种写法在Python中叫做增量赋值
>>> x = 5 >>> x+=1 >>> x 6 >>> x-=2 >>> x 4
增量赋值也可以用于字符串
>>> a = 'hello' >>> a +='world' >>> a 'helloworld'
流程控制之if判断
注意:
1、每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
if语句举例:
age = input('请输入你的年龄:') age = int(age) if age <= 18: print('美好的年龄') elif age <= 30: print('成年人') else: print('老年人')
if 嵌套
在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中。
if 表达式1: 语句 if 表达式2: 语句 elif 表达式3: 语句 else: 语句 elif 表达式4: 语句 else: 语句
例子:
num=int(input("输入一个数字:")) if num%2==0: if num%3==0: print ("你输入的数字可以整除 2 和 3") else: print ("你输入的数字可以整除 2,但不能整除 3") else: if num%3==0: print ("你输入的数字可以整除 3,但不能整除 2") else: print ("你输入的数字不能整除 2 和 3")
流程控制之while循环
while循环
while 条件:
代码1
代码2
代码3
例子:while循环
a = 100 sum = 0 counter = 1 while counter <= a: sum = sum + counter counter += 1 print("1 到 %d 之和为: %d" % (a,sum))
例子:while循环使用else语句
在 while … else 在条件语句为 false 时执行 else 的语句块:
count = 0 while count < 5: print (count, " 小于 5") count = count + 1 else: print (count, " 大于或等于 5")
与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句,while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句
#如果执行过程中被break啦,就不会执行else的语句啦 count = 0 while count <= 5 : count += 1 if count == 3:break print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------") 输出 Loop 1 Loop 2 -----out of while loop ------
break和continue语句
1.break
break语句可以跳出 for 和 while 的循环体,如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。 实例如下:(下面以while循环举例)
var = 10 while var > 0: print('当前的变量值为 :',var) var -= 1 if var == 5: break print("bye bye!")
输出内容如下:
当前的变量值为 : 10
当前的变量值为 : 9
当前的变量值为 : 8
当前的变量值为 : 7
当前的变量值为 : 6
bye bye!
2.continue
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
var = 10 while var > 0: var -= 1 if var == 5: #变量为5时跳过输出 continue print('当前变量值 :',var) print('bye bye')
输出内容如下:
当前变量值 : 9
当前变量值 : 8
当前变量值 : 7
当前变量值 : 6
当前变量值 : 4
当前变量值 : 3
当前变量值 : 2
当前变量值 : 1
当前变量值 : 0
bye bye
流程控制之for循环
for循环
Python的for循环可以遍历任何序列的项目,如一个列表或字符串等。
>>> city = ['Beijing','Shanghai','Shenzhen'] >>> for i in city: print(i) Beijing Shanghai Shenzhen
循环遍历字典元素
例子:
>>> a = {'name':'zhangsan','age':'18'} >>> for i in a: print('%s:%s'%(i,a[i])) name:zhangsan age:18
for循环使用序列解包遍历字典
>>> tups = {'name':'zhangsan','age':'18'} >>> for key,value in tups.items(): print('%s:%s'%(key,value)) name:zhangsan age:18
迭代工具
在Python中,迭代序列或其他可迭代对象时,有一些函数非常有用。
并行迭代
>>> student=['zhangsan','lisi','wangwu'] >>> number=[001,002,003] >>> for i in range(len(student)): print(student[i],'的学号是:',number[i]) zhangsan 的学号是: 1001 lisi 的学号是: 1002 wangwu 的学号是: 1003
zip函数
在python中,内建的zip函数用来进行并行迭代,可以把两个蓄力合并在一起,返回一个元组的列表。
例子:
>>> student=['zhangsan','lisi','wangwu'] >>> number=[1001,1002,1003] >>> for name,num in zip(student,number): print(name,'的学号是:',num) zhangsan 的学号是: 1001 lisi 的学号是: 1002 wangwu 的学号是: 1003
zip函数可以用于任意数量的序列,并且可以应付不等长的序列,当短序列‘用完’时就会停止
>>> for num1,num2 in zip(range(3),range(100)): print('zip键值对为:',num1,num2) zip键值对为: 0 0 zip键值对为: 1 1 zip键值对为: 2 2
反转和排序迭代
断言
在Python中, 有一个和if语句工作方式非常相近的关键字,其工作方式类似如下伪代码:
if not condittion: crash program
在没完善一个程序之前,我们不知道程序会在哪里出错,与其在运行时崩溃,不如在出现错误条件时就崩溃。一般来说,可以要求一些条件必须为真。在Python中,assert关键字能实现这种工作方式。
例子:
>>> x =3 >>> assert x > 0,'x is not zero or negative' >>> assert x %2 ==0,'x is not an even numbner' #提示x不是偶数 Traceback (most recent call last): File "<pyshell#34>", line 1, in <module> assert x %2 ==0,'x is not an even numbner' AssertionError: x is not an even numbner
由上你面的输出可以看到,当assert后的条件为真时,程序正常运行;当assert后面的条件为假时,输出错误信息。错误提示信息由我们自己定义,这个错误提示信息可以称为异常参数。assert的异常参数是在断言表达式后添加的字符串信息,用来解释断言并更容易知道问题出在哪里。
使用assert断言时,注意一下几点:
- assert断言用来声明某个条件是真的。
- 如果你非常确定你使用的列表中只是少有一个元素,想要检验这一点,并在它非真时引发一个错误,那么assert语句是应用在这种情况下理想的语句。
- assert语句失败时,会引发一个AssertionError。