目录
(一) 今日进展及明日计划
今日进展:
1.继续看视频过python的基本语法.
存在的问题:
1.这两天把python的大部分语法都过了一遍,只剩下类那一部分了,文件操作那一部分还不是很清楚,得再学习学习.
明日计划:
1.把剩下的python语法过完,然后做下练习.
(二) 具体进展情况
1. 过一遍python的语法
(6) 字典的核心操作
# 键值可以是数值、列表、字符串
z_value = [1,2,3]
z={}
z['one'] = z_value
print(z)
z['piece'] = 3
print(z)
z['luffy'] = 'abc'
print(z)
# 字典的嵌套
z2 = {}
d1 = {'one':123,'piece':456}
d2 = {'one2':789,'piece':123}
z2['test1'] = d1
z2['test2'] = d2
print(z2)
# 字典的另外一种表示方法,不推荐
z3 = dict([('one',123),('piece',456)])
print(z3)
# 改变键值
z4 = {'one':123,'piece':456}
z4['one'] += 1
print(z4)
# get方法
z5 = {'one':123,'piece':456}
print(z5.get('one')) # get方法1
print(z5['one']) # get方法2
# get字典中没有的值
print(z5.get('ONE','木有')) # 有就输出,没有就打印出后面的
# print(z5['END']) # 没用的,会报错
# 弹出(弹出之后就没了)
z6 = {'one':123,'piece':456}
print(z6)
z6.pop('one')
print(z6)
# 删除
del z6['piece']
print(z6)
# 更新及添加
z7 = {'one':123,'piece':456}
z8 = {'one':789,'python':888}
z7.update(z8)
print(z7)
# 判断键是否在字典中
z9 = {'one':123,'piece':456}
print('one' in z9)
print('one' not in z9)
print('luffy'in z9)
# 属性调用
z9 = {'one':123,'piece':456}
print(z9.keys())
print(z9.values())
print(z9.items())
(7) Set结构
# 集合set,不重复
z = [123,123,456,789]
z = set(z)
print(z)
# 集合构造
z1 = set() # 构造方法1
print(type(z1))
z2 = set([123,123,456,456,789,789]) # 构造方法2
print(z2)
z3 = {1,1,1,3,4} # 构造方法3( 有key-value对是字典,否则是集合)
print(z3)
# 集合的操作
a = {1,2,3,4,5}
b = {3,4,5,6,7}
# 并集
print(a.union(b))
print(b.union(a))
print(a | b)
# 交集
print(a.intersection(b))
print(a & b)
# 集合的差异 = 减法
print(a.difference(b)) # a有b没有的元素
print(a-b)
print(b.difference(a)) # b有a没有的元素
print(b-a)
# 包含
a1 = {1,2,3,4,5,6}
b1 = {2,3,4}
print(b1.issubset(a1)) # 判断b1是否是a1的子集
print(b1<=a1)
print(a1.issubset(b1)) # 判断a1是否是b1的子集
print(a1<=b1)
print(a1<=a1)
# 集合的添加
a2 = {1,2,3}
a2.add(4)
print(a2)
a2.update([5,6,7]) # 往集合里添加新的元素
print(a2)
# 集合的删减
a2.remove(1) # ()里的是元素,列表也是这样,但不能为空
print(a2)
# 弹出,只能挨个弹出,从第一个开始弹(列表从后面弹,集合从前面弹)
a2.pop()
print(a2)
(8) 赋值机制
z = 1000
y = z
print(id(z))
print(id(y))
print(z is y)
print(z is not y)
y = 1001
print(id(y))
# 我这里相同赋值对应的id是一样的,而up的却是不同的
# up说较大的数值不同,而较小的数值相同,而我都一样
m = 1000000000000000000
n = 1000000000000000000
print(id(m))
print(id(n))
(9) 判断结构
#判断结构
n = 100
if n > 50:
print('OK') # 4空格=1个tab
n = 100
if n > 200:
print('OK') # 4空格=1个tab
print('test')
n = 100
if n >200:
print('200')
elif n < 100:
print('100')
else:
print('100-200')
n = [123,456,789]
if 123 in n:
print('OK')
n = {'one':123,'piece':456}
if 'one' in n:
print('OK')
(10) 循环结构
# 循环结构
# while循环
n = 0
while n < 10:
print(n)
n += 1
N = set(['海','贼','王'])
while N:
n = N.pop() # 只要集合 N 中不为空就把元素弹出,n可能是乱序的
print(n)
# for循坏
A = set(['海','贼','王'])
for name in A:
print(name) # 遍历,把值给name,也可以不是name哈,然后打印
for i in range(10):
print(i)
A = [1,2,3,4,5,6,7,8,9]
for i in range(3): # 从0 开始共取3个数出来
# print(i)
print(A[i])
A = [1,2,3,4,5,6,7,8,9]
for i in range(len(A)): # 用len保证全部取到
# print(i)
print(A[i])
A = [1,2,3,4,5,6,7,8,9]
for i in A:
if i % 2 == 0:
print(i)
else:
continue # for循环进入下一次
print(i)
A = [2,1,3,4,5,6,7,8,9]
for i in A:
if i % 2 == 0:
print(i)
else:
break # 循环结束
print(i)
(11) 函数定义
a = 10
b = 20
print(a+b)
# 封装到函数
def print_value():
print('a =',a)
print('b =', b)
print('c =', c)
# # 调用函数
a = 10
b = 20
c = 30
print_value()
def add_ab(a,b):
print('sum =',a+b)
add_ab(10,20)
add_ab(140,20)
def add_ab(a,b):
return(a+b)
print(add_ab(1,3))
def add_ab(a=1,b=3): # 给默认值
return(a+b)
print(add_ab()) # 不写就按默认值
print(add_ab(2,5)) # 写了就按写了的值
def add_number(a,*args): # 传进来的参数个数不定
for i in args:
a += i
return a
print(add_number(1,2,3))
def add_number(a,**kwargs): # 传进来的参数是key--value形式的
for key,value in kwargs.items():
print(key,value)
print(add_number(1,x=2,y=3))
!!!: 这里最后的None不知道怎么一回事儿
def add_number(a,*args): # 传进来的参数个数不定
b = 0
for i in args:
a += i
b += a
return a,b
a,b = add_number(2,2,3) # 这个函数的返回值原本就两个:a与b
print(a,b)
(12) 模块与包
# 脚本=包
# %%writefile.zzy.py
x = 10
def zzy_add(zzy_list):
zzy_sum = 0
for i in range(len(zzy_list)):
zzy_sum += zzy_list[i]
return zzy_sum
zzy_list = [1,2,3,4,5,6]
print(zzy_add(zzy_list))
import DEMO2
# print(DEMO2)
print(DEMO2.x)
print(DEMO2.zzy_list)
zzy_list = [10,11]
print(DEMO2.zzy_add(zzy_list))
import DEMO2 as zzy # 别名
print(zzy.x)
zzy_list = [1,2,3]
print(zzy.zzy_add(zzy_list))
from DEMO2 import zzy_add,x # 导入指定函数,就不必加‘.’了
print(x)
print(zzy_add(zzy_list))
from DEMO2 import * # 将包中的函数全部导入
print(x)
print(zzy_add(zzy_list))
import os
# os.remove('DEMO4.py') # 删工程中的.py文件
print(os.path.abspath('.')) # 调系统路径信息
(13) 异常处理模块
math模块使用方法:https://blog.csdn.net/knidly/article/details/80243829
import math
for i in range(10):
input_number = input('write a number')
if input_number == 'q':
break
result = math.log10(float(input_number))
print(result)
import math
for i in range(10):
try: # 捕捉异常
input_number = input('write a number')
if input_number == 'q':
break
result = math.log10(float(input_number))
print(result)
except ValueError: # 提示出现异常
print('ValueError:input_must>0') # 提示出现异常
# break # 出现异常直接退出
import math
for i in range(10):
try: # 捕捉异常
input_number = input('write a number')
if input_number == 'q':
break
result = math.log10(float(input_number))
print(result)
except ValueError: # 提示出现异常
# print('ValueError:input_must>0') # 提示出现异常
break # 出现异常直接退出
import math
for i in range(10):
try: # 捕捉异常
input_number = input('write a number')
if input_number == 'q':
break
result = 1/math.log10(float(input_number))
print(result)
except ValueError: # 提示出现异常
# print('ValueError:input_must>0') # 提示出现异常
break # 出现异常直接退出
import math
for i in range(10):
try: # 捕捉异常
input_number = input('write a number')
if input_number == 'q':
break
result = 1/math.log10(float(input_number))
print(result)
except Exception: # 提示出现异常,任何异常
print('ValueError:input_must>0') # 提示出现异常
# break # 出现异常直接退出
注:
这里输入‘q’不清楚为啥没有退出write a number后面不能加空格
import math
for i in range(10):
try: # 捕捉异常
input_number = input('write a number')
if input_number == 'q':
break
result = 1/math.log10(float(input_number))
print(result)
except ValueError: # 提示出现异常,任何异常
print('ValueError:input_must>0') # 提示出现异常
# break # 出现异常直接退出
except ZeroDivisionError: # 提示出现异常,任何异常
print('ZeroError:num_must!=0') # 提示出现异常
# break # 出现异常直接退出
except Exception:
print('unknow error')
# 自定义异常
class zzyError(ValueError):
pass
cur_list = ['a','b','c']
while True:
cur_input = input()
if cur_input not in cur_list:
raise zzyError('invalid input: %s' %cur_input) #抛出异常,程序终止
try:
1/0
# except:
# print('==0')
finally:
print('finally')
try:
1/0
except:
print('==0')
finally:
print('finally')