全局变量、函数、文件基本操作、冒泡排序

一、三元表达式

#三元表达示
a= 1
sex = '男' if a ==1 else 'nv'
# if a==1:
# sex = '男'
# else:
# sex = '女'


#列表生成式:按照某一个规则生成列表
l = [1,5,6,7,44,54,67,346,8] #
l2 = [str(i)+'km' for i in l ]#循环l2 ,list可以循环,循环后数据保存在listli
l3 = [str(i)+'km' for i in l if i >= 30]#循环后把结果保存起来,可以加判断
print(l3)


全局变量、局部变量
# def func():#有多个返回值,拿一个变量来接收放在一个元组里面,拿多个变量来接收,就不是元组
# a =1
# b =2
# c =3
# return a,b,c
# result = func()
#print(result)

# #为什么可用多个变量来接收:→ 解包
# info = ['xiaobai','beijing','haiding']
# name,addr,e = info
# print(name,addr,e) #把list里的值取出来

#局部变量:在函数里面定义的变量都是局部变量(没有加global修饰 )
#作用域在函数里面,出了函数就失效
#全局变量:定义在函数外面,一般都是写在代码的最上面
#作用域是全部的,大家都可以用
name = 'caimingchang'
def rename():#如果要修改全局变量的值,那么要声明一下
global name #声明:修改的是全局变量,name caimingchang 改为cai
name = 'cai'
print('name1',name)

def test():
addr = 'beijing'#在函数里面定义的变量,如果不加global修饰的话,就是局部变量
print('addr',addr)

print('name2',name)
rename()
print('name2',name)
#print(addr) #在函数里面定义的变量,如果不加global修饰的话,print不到

#常量:一个不变的值
IP = '192.168.3' #常量 用大写字母表示,基本不会变

函数的参数:
# def a():#必填参数,位置参数
# pass
# def b(name,age):
# pass
# b('xiaoming','age')#位置参数
#
# def op_file(file,content=None):#默认值参数
# with open(file,'a+',encoding='utf-8') as f:
# if content:
# f.write(str(content))
# else:
# f.seek(0)
# result = f.read()
# return result

#可变参数
#关键字参数
def send_sms(*args):#可变参数,传一个*号 ;不是必填,不限制参数传入的个数,放到元组里面
print(args)
send_sms(113,121,11)

def t(**kwargs):#关键字参数,传入时,必须指定关键字
print(kwargs)
t(age=5,name='liu')#传入后 放入字典中

def test(anme,phone,qq,addr,sex):#四种要是一起用,一定要按照这个顺序,如果有必填 必填一定在前面
pass

test('xiaoming','188','111','beijing','nv')
test(age=18,addr='beijing',qq='11',name='liujie')
test('xiaoing','13232',qq='334',sex= 'xx')

文件的基本操作:
#r    rb+ 可读,不可写  ,不加b ,读出来的类型,是字符串
#w wb+ 可写,不可读
#a ab+ 追加
# f = open('users.txt','a+',encoding='utf_8')
# l = ['a\n','b\n','c\n']
# for i in l:
# f.write(i+'\n')
# f.writelines() #可以循环list;可以循环字符串,但是影响效率;

#r+ 文件指针默认最前,读是没有问题,若写进几位数,会把原来的内容覆盖掉,但是不会报错
#w+ 写新文件没问题,但是以前内容会被全部覆盖
#a+ 文件指针在末尾,即可以读又可以写
f = open('users.txt','a+',encoding='utf_8')#a模式追加,不会清空,文件指针在末尾,a模式不可读
f.seek(0)
f.truncate()#删除文件清空内容
# f.write('~~~~~2')
# print(f.read())
f.close()

#rb rb+ bytes二进制,写非字符串类的,图片视频等等,需要这种b模式,读其他类型
#wb wb+ 不加b ,读出来的类型都是字符串
#ab ab+

冒泡排序:
l = [5,2,45,7,3,67,47,37,2]#每个相邻的数字作比较
count = 0
for i in range(len(l)-1):#控制总共需要多少趟
for j in range(len(l)-1-i):#控制相邻的交换
if l[j] > l[j+1]:
l[j],l[j+1] = l[j+1],l[j]
count+=1
print(l)
print(count)






posted @ 2020-05-15 19:57  刘小小liu  阅读(136)  评论(0编辑  收藏  举报