简答题1
1.什么是全局变量?
函数的全局变量:整个文件都可以共用的,在函数体外面的
2.什么是局部变量
函数的局部变量:在函数体这个局部里面
3.函数内部如何修改全局变量?(如何声明全局变量?)
使用global关键字,将局部变量声明为全局变量。但是一般不建议用,不然最后自己都不知道变量的值到底是多少,初学者慎用!
4.写出已经学过的所有的Python的关键字,分别写出用途。
#可以通过help()查看关键字 help('keywords') Here is a list of the Python keywords. Enter any keyword to get more help. False class from or None continue global pass True def if raise and del import return as elif in try assert else is while async except lambda with await finally nonlocal yield break for not
已经学过的,并作如下用途解释:
False :①布尔类型,假。当条件判断不成立时,返回False。 ②if 条件为false时,不执行该if/elif下面的语句 ③用于while循环
True: :①布尔类型,真。当条件判断成立时,返回True。 ②if 条件为True时,执行该if/elif下面的语句 ③用于while循环
None:表示没有返回值
and: 逻辑操作符 真真为真 有一个条件为假,结果就是False
or : 逻辑操作符 真真为真 所有的条件都是假 结果才是False
continue:用于for while循环,表示结束本次循环,执行下一次循环
break:用于for while循环,表示跳出循环(不会再执行循环体了)
global:可以声明一个局部变量为全局变量
def: define 即定义函数的关键字
pass:用于写伪代码使用,(某段代码还不知道具体怎么写,可用pass,就不会报错啦)
del :删除 可以用来删除整个列表 、元组、字典等
import:导入模块(import random ,random.randint(1,10) 导入随机模块,生成随机数1-10)
if 、elif :条件判断语句 ,后面必须要接条件语句+冒号:
else:条件判断语句,后面不能接条件语句,直接一个冒号:(else下面可以继续接if.....elif.....等)
return:函数体里面使用,函数遇到return就结束,return后面的语句不会再执行
in 、not in:成员关系操作符(for i in/not in list1:)
for:用于for循环(一般知道循环次数用for循环)
while:用于while循环(一般不知道循环次数,用while循环)
简答题2.写出你接触过的内置函数,并说明他们的作用
可以使用dir(__builtins__)查看所有的内置函数
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError',
'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError',
'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError',
'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning',
'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError',
'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError',
'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning',
'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit',
'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError',
'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError',
'__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all',
'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright',
'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset',
'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len',
'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property',
'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple',
'type', 'vars', 'zip']
1.type() :查看数据类型
2.sum():求最大值
3.min()、max():求最小值、最大值
4.int()、float()、bool()、str()、list()、tuple()、dict()、set() :数据类型转化(整型、浮点型、布尔型、字符串、列表、元组、字典(key-value)、集合(去重))
5.sort()、sorted():排序(sort()是修改原列表,没有返回值;sorted()是排序一个新的列表作为返回值,原列表不会发生变化)
6.zip():用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。
如果各个可迭代对象的元素个数不一致,则返回的对象长度与最短的可迭代对象相同。
利用 * 号操作符,与zip相反,进行解压。
>>> a = [1,2,3] >>> b = [4,5,6] >>> c = [7,8,9,10,11,12] >>> z = zip(a,b,c) >>> z <zip object at 0x0000000002B86408> #返回的是一个对象 >>> list(z) [(1, 4, 7), (2, 5, 8), (3, 6, 9)] #使用list()函数转换为列表 >>> list(zip(a,c)) [(1, 7), (2, 8), (3, 9)] >>> z = zip(a,b) >>>> list(zip(*z)) #解压也使用list进行转换 [(1, 2, 3), (4, 5, 6)]
7.range()函数可创建一个整数列表,一般用在 for 循环中
>>>range(10) # 从 0 开始到 10,取头不取尾 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) # 从 1 开始到 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) # 步长为 5 [0, 5, 10, 15, 20, 25] >>> range(0, -10, -1) # 负数 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []
8.reversed()函数是返回一个翻转的迭代器
# 字符串 seqString = 'Runoob' print(list(reversed(seqString))) # 元组 seqTuple = ('R', 'u', 'n', 'o', 'o', 'b') print(list(reversed(seqTuple))) # range seqRange = range(5, 9) print(list(reversed(seqRange))) # 列表 seqList = [1, 2, 4, 3, 5] print(list(reversed(seqList)))
9.open() 、close() 打开、关闭文件,一般连在一起使用
10.print()打印结果
11.help()函数用于查看函数或模块用途的详细说明。
12.input():标准输入数据,返回为 string 类型
13.len() 返回对象(字符、列表、元组等)长度或项目个数。
14.enumerate() 枚举 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
seq = ['one', 'two', 'three'] for k in enumerate(seq): #结果是元组 print(k) ''' (0, 'one') (1, 'two') (2, 'three') '''
seq = ['one', 'two', 'three'] for k,v in enumerate(seq): #元组的解包, print(k,v) ''' 0 one 1 two 2 three '''
15.eval()函数用来执行一个字符串表达式,并返回表达式的值。
a = 7 print(eval('a * 8')) print(eval('3+8')) ''' 56 11 '''
16.format() 格式化字符串的函数 str.format()
编程题1
def write_data(person_info): '''往文件里追加数据局''' #打开文件 file1 = open('test.txt','a',encoding = 'utf-8') keys = person_info[0].keys() new_keys = list(keys) for i in range(len(new_keys)): if i < len(new_keys)-1 : file1.write(new_keys[i]+ ',') else: file1.write(new_keys[i]+' ') for dicts in range(len(person_info)): values = person_info[dicts].values() new_values = list(values) for j in range(len(new_values)): if j < len(new_values)-1: file1.write(new_values[j] + ',') else: file1.write(new_values[j] + ' ') #关闭文件 file1.close() person_info = [{'name':'yuze','age':'18','gender':'男','hobby':'假正经','motto':'I am yours'}, {'name':'cainiao','age':'19','gender':'女','hobby':'看书','motto':'Lemon is best'}, {'name':'dalao','age':'20','gender':'女','hobby':'coding','motto':'coding 666'}, {'name':'myself','age':'16','gender':'女','hobby':'刷抖音','motto':'刷起来没下线'}, ] print(write_data(person_info))
复盘整理:
encoding = 'utf-8' ''' 三、编写如下程序 有以下数据来自于一个嵌套字典的列表(可自定义这个列表),例如: person_info = [{"name":"yuze", "age": 18, "gender": "男", "hobby": "假正经", "motto": "I am yours"} , .... 其他] 创建一个txt文本文件,来添加数据 a.第一行添加如下内容: name,age,gender,hobby,motto b.从第二行开始,每行添加具体用户信息,例如: yuze,17,男,假正经, I am yours cainiao,18,女,看书,Lemon is best! ''' person_info = [{'name':'yuze','age':'18','gender':'男','hobby':'假正经','motto':'I am yours'}, {'name':'cainiao','age':'19','gender':'女','hobby':'看书','motto':'Lemon is best'}, {'name':'dalao','age':'20','gender':'女','hobby':'coding','motto':'coding 666'} ] # a.第一行添加如下内容: # name,age,gender,hobby,motto for i in person_info: line = ','.join(i.keys())#join().连接字符串。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 with open('test.txt','w',encoding='utf-8') as file1:#'w'覆盖,只有最后一行就ok了 file1.write(line) file1.write(' ') # b.从第二行开始,每行添加具体用户信息,例如: # yuze,17,男,假正经, I am yours # cainiao,18,女,看书,Lemon is best! #方法一 for j in person_info: data = ','.join(j.values()) with open('test.txt','a+',encoding='utf-8') as file1: file1.write(data) file1.write(' ') #方法二 with open('test.txt','a+',encoding='utf-8') as file1: for h in person_info: for k,v in enumerate(h.values()): if k != len(h.values()) - 1: file1.write(v) file1.write(',') else: file1.write(v) file1.write(' ') # 方法三 with open('test.txt','a+',encoding='utf-8') as file1: for dicts in person_info: values = list(dicts.values()) for p in range(len(values)): if p != len(values)-1: file1.write(values[p]+',') else: file1.write(values[p]+' ')
#写入数据 f = open("test_data.txt", 'a+', encoding='utf-8') f.write("url:/futureloan/mvc/api/member/register@mobile:18866668888@pwd:123456 ") f.write("url:/futureloan/mvc/api/member/recharge@mobile:18866668888@amount:1000") f.close() # 取出数据 with open('test2.txt','r+',encoding = 'utf-8') as file1: data = file1.readlines() lst = [] for each in data: dic = {} for i in each.strip().split('@'): dic[i.split(':')[0]] = i.split(':')[1] lst.append(dic) print(lst) #封装成函数 def test_file(file): lst = [] with open(file) as file1: for i in file1.readlines(): dic = {} for j in i.strip().split('@'): dic[j.split(':')[0]] = j.split(':')[1] lst.append(dic) return lst print(test_file("test2.txt"))
第三次复盘作业
1.
# 有以下数据来自于一个嵌套字典的列表(可自定义这个列表),例如: # person_info = [{"name":"yuze", "age": 18, "gender": "男", "hobby": "假正经", "motto": "I am yours"} , .... 其他] # # 创建一个txt文本文件,来添加数据 # a.第一行添加如下内容: # name,age,gender,hobby,motto # # b.从第二行开始,每行添加具体用户信息,例如: # yuze,17,男,假正经, I am yours # cainiao,18,女,看书,Lemon is best! person_info = [{'name':'yuze','age':'18','gender':'男','hobby':'假正经','motto':'I am yours'}, {'name':'cainiao','age':'19','gender':'女','hobby':'看书','motto':'Lemon is best'}, {'name':'dalao','age':'20','gender':'女','hobby':'coding','motto':'coding 666'} ] #取出title headers = ','.join(person_info[0].keys()) #title写入txt文件 with open('my_test.txt','w',encoding='utf8') as f: f.write(headers+' ') #添加具体信息 with open('my_test.txt','a',encoding='utf8') as f: for dic in person_info: data = ','.join(dic.values()) f.write(data+' ') #添加信息用enumerate with open('my_test.txt','a',encoding='utf8') as f: for idx,data in enumerate(person_info): new_data = ','.join(data.values()) if idx != 2: f.write(new_data + ' ') else: f.write(new_data)
2.
#写入文件下面的信息 # f.write("url:/futureloan/mvc/api/member/register@mobile:18866668888@pwd:123456 ") # f.write("url:/futureloan/mvc/api/member/recharge@mobile:18866668888@amount:1000") #再以字典的形式读取出来 with open('tst_data.txt','a+',encoding='utf8') as f: f.write('url:/futureloan/mvc/api/member/register@mobile:18866668888@pwd:123456 ') f.write('url:/futureloan/mvc/api/member/recharge@mobile:18866668888@amount:1000')
#读取数据
def read_data(file): with open(file,'r+',encoding='utf8') as f: data=f.readlines() #读取文件数据,返回的是list my_list = [] for str in data: new_list = str.strip().split('@') dic = {} for each in new_list: dic[each.split(':')[0]] = each.split(':')[1] my_list.append(dic) return my_list print(read_data('tst_data.txt'))