21.8.18学习内容
文件操作额外补充
""" flush 指的是立即写入硬盘,相当于crtl+s readable 文件是否可读\writeable文件是否可写 seek 控制光标移动,seek(offset,whence) offset指的是控制位数,whence指的是操作模式. 0:既可以用在文本模式也可以用在二进制模式(到文件开头) 1:只可以在二进制模式下使用(当前位置) 2:只可以在二进制模式下使用(文件末尾) with open(r'123.txt','r',encoding='utf8') as :f data=f.read print(data) # 若果要移动光标位置 f.seek(1,0)#移动到文件开头的位置,再往前移一个字符 如果是在末尾,可以用负数来表示前进 """
函数基本使用
# 函数的基本语法结构 def 变量名(参数1,参数2): #添加注释 函数体代码 需要再加一个return返回值.
# 需要注意事项: 1.在使用函数之前一定要确保函数的存在,也就是要先写入函数再使用. 2.函数名要和变量名保持一致,要做到见名知意. 3.执行完函数需要给调用者一个反馈值 return.
-------------------------------------------------------------------------------
定义阶段: #函数在定义的阶段只检测函数体语法,不执行函数体代码.在定义过程中只要语法正确即可. 调用阶段: #函数名加括号调用时才会加括号.
ps:函数体内部的代码外界是不能使用的.
函数的返回值
# 返回值就是执行完某个方法反馈出来的结果.可以通过给方法赋值得到返回值. def data(): print('from data') res=data() print(res) # none # 当函数体没有return关键字的时候,默认返回none def data(): print('from data') return 123 res=data() print(res) #123 # return后面关键字写什么就返回什么 #如果return返回的值不指定类型,会默认转换成元组的形式. # 函数体代码遇到return立刻结束整个函数运行.
def data(): name=input('输入你的姓名') return name # 返回name即输入的内容 name=data() #将输入的内容赋值给函数
print(name)# 这样就能打印出获取到的姓名
""" 1.无参数函数:函数不需要参数,在定义阶段就不需要参数,在调用时也不需要参数 def index(): print('from index') index() 2.有参函数: 函数在定义阶段括号内填写了变量名,那么在调用时就必须给参数 def index(a): print('from index',a) index(1561) 3.空函数:没有具体函数体代码.可以用pass代替 可以做到理清整体思路 def learn(): pass# 补全语法无实际意义 """
函数的参数
""" 函数参数分为实际参数和形式参数. 在定义阶段的括号内写入的变量名叫做形式参数,简称形参. 在调用阶段,括号内书写的值称之为函数的实际参数,实参. 函数的形参相当于变量名,函数的实参相当于变量值,两者在调用阶段时临时绑定,在运行结束后分开. def index(age): # 形参 print(age) index(18) # 实参 age=18 """
1.位置参数:按照先后顺序依次对应传值,不能多也不能少. def index(x,y): # 形参中有几个就必须要给几个实参.不然会报错!不能多也不能少 print(x,y) index(2,3) 2.关键字参数:可以通过实参直接赋值的方式 给形参传值,可以打破位置限制 def index(x,y): print(x,y) index(x=123,y=456) index(123,y=456) # 默认短后长 位置参数一定要在关键字参数的前面 index(123,x=456)# 不能重复传值,并且y没有赋值 3.默认参数:函数在定义阶段就可以给参数进行赋值 没有给值就用形参中赋的值,给了就用给了的值 def data(name,age,gender='male'): print(name,age,gender) data('max',18,'female') data('max1',15,'male') data('ma2x',17,) data('max3',16,) 4.可变长参数:*号在形参中使用,会接受多余的位置参数,以元组的形式赋值给*号后面的变量名 def exam(a,*b): print(a,b) exam(1,2,'a',5) # 1 (2, 'a', 5) **形参中 会接受多余的关键字参数,组织成字典的格式,赋值给**后面的变量名. def exam(a,**b): print(a,b) exam(a=1,b=2,c='a',d=5) # 位置参数给* 关键字参数给** def func(*a, **b): print(a, b) func(1, 2, 3, a=1, b=2, c=3) func(1, 2, 3, 4, 5, 6, 7) func(a=1, b=2, c=3) # 但是要注意位置参数要在关键字前面 通常: 针对形参中的可变长参数 变量名推荐使用 *args **kwargs def login(*args, **kwargs): pass
# 选择注册或者登录功能 def register(): # 1.设置函数register该函数为注册功能 print('注册功能') def login(): # 2.设置函数login该函数为登录功能. print('登录功能') dict={'1':register,'2':login} #3.设置一个字典,为下面代码取值所用 while True: # 4.添加循环给出选择注册或者登录, print('1.注册>>>' '2.登录>>>') choice=input('请输入关键字').strip() # 5.获取输入内容 if choice in dict: # 6.做判断,如果输入内容在上面的字典中,1或者2 则执行 name=dict.get(choice) # 7.通过键取值 取到的值1或者2作为赋值给name()函数 name() # 8.执行函数 else: # 9.如果不是1或者2 的处理方式 print('输入错误请重新输入')
# 用函数进行封装之注册部分
def register(): # 1.设置函数register该函数为注册功能 user_name=input('username>>>:').strip() pass_word=input('password>>>:').strip() with open(r'123.txt','r',encoding='utf8')as f: # 1.1 先打开文件读取内容校验账号是否注册过 for line in f: # 1.2 对文件f进行循环读取 real_name = line.split('|')[0] #1.3进行比对 并取值用户名 并以(|)的形式进行赋值 if real_name == user_name: print('账户已存在') return #1.4结束函数运行 with open(r'123.txt','w',encoding='utf8')as f: #1.5如果不存在就写入 f.write('%s|%s\n'%(user_name,pass_word)) #1.6 写入内容进行定格 print('%s注册成功'%user_name)
#用函数进行封装之登录部分
def login(): # 2.设置函数login该函数为登录功能. user_name=input('username>>>:').strip() pass_word=input('password>>>:').strip() with open(r'123.txt','r',encoding='utf8')as f: #2.1打开文件读取内容 for line in f: real_name,real_password=line.split('|') #2.2对f进行循环取值 并做切割 if real_name==user_name and real_password==pass_word.strip('\n' ):#2.3校验用户名和密码是否正确 并且写入时要换行 print('登录成功') return #2.4结束函数运行 如果整个循环都没到这一步 可以直接打印 用户名或者密码错误无需else或者elif print('用户名或者密码错误')
l = [11, 22, 33, 44, 55, 66, 77, 88, 99] print(max(l)) print(min(l)) print(sum(l)) # 分别是求最大值,求最小值,以及求和 l = ['jason', 'kevin', 'tony', 'jerry', 'tom'] count = 1 #for name in l:
print(count,name) # count += 1 #对名字进行编号排序
# format字符串格式化输出 print('my name is {} and my age is {}'.format('jason',18)) print('my name is {0} {1} {1} and my age is {1} {0}'.format('jason',18)) print('my name is {name} {name} {age} and my age is {age}'.format(name='jason',age=18))
# chr 查看ASCII码中数字对应的字符 print(chr(66)) # A 65-90 print(chr(120)) # z 97-122