将s中的5个字符提取出来并拼接成字符串,文件可
1.Python 2.x 3.x 区别
1、判断下列逻辑语句的True,False.
编写登陆接口
Python基础-月考,python基础
8<<2等于?
1 # 32 2 # 解释:将8按位左移2位 3 # 8 0 0 0 0 1 0 0 0 4 # 32 0 0 1 0 0 0 0 0
通过内置函数计算5除以2的余数
1 print(divmod(5, 2)) 2 3 #(2, 1) 2 = 5 // 2; 1 = 5 % 2
3. s=[1,"h",2,"e",[1,2,3],"l",(4,5),"l",{1:"111"},"o"],将s中的5个字符提取出来并拼接成字符串
1 s = [1, "h", 2, "e", [1, 2, 3], "l", (4, 5), "l", {1: "111"}, "o"]
2 s_g = filter(lambda x: type(x) is str, s) #由于int类型非可迭代对象,先使用filter过滤掉
3 s_new = '' #拼接字符串变量
4 for i in s_g:
5 s_new += i
6 print(s_new)
4. 判断"yuan"是否在[123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"],如何判断以及对应结果?
1 l = [123, (1, "yuan"), {"yuan": "handsome"}, "yuanhao"]
2 l_yuan = str(l) #将列表转换为字符串
3 if 'yuan' in l_yuan:
4 print('True')
5. 执行结果并解释为什么?
l=[1,2,3]
l2=l.insert(3,"hello")
print(l2)
1 执行结果:None
2 解释:‘.insert’方法的返回值为‘None’
- 计算结果以及为什么?
a=[1,2,[3,"hello"],{"egon":"aigan"}]
b=a[:]
a[0]=5
a[2][0]=666
print(a)
print(b)
1 a = [1,2,[3,"hello"],{"egon":"aigan"}]
2 b = a[:] #列表b和列表a相同
3
4 a[0] = 5 #将列表a中的第一个元素‘1’变为‘5’
5 a[2][0] = 666 #将列表a中的第3个元素‘[3,"hello"]’(同样为列表)的第1个元素变为‘666’
6
7 print(a) #打印更改后的列表a
8 print(b) #打印列表b,就是列表a更改前的元素
9
10 #执行结果: [5, 2, [666, 'hello'], {'egon': 'aigan'}]
11 # [1, 2, [666, 'hello'], {'egon': 'aigan'}]
- 使用文件读取,找出文件中最长的行的长度(用一行代码解决)?
1 print(max([len(x) for x in open('test.py', encoding='utf-8')]))
- 分析结果
def add(s, x):
return s + x
def generator():
for i in range(4):
yield i
base = generator()
for n in [1, 11]:
base = (add(i, n) for i in base)
print(list(base))
1 #结果:[22, 23, 24 ,25]
2 #解释:
3 #这个可以以管道的思路来理解,首先generator()函数是第一个生成器,下一个是第一次循环的base = (add(i, n) for i in base),
4 # 最后一个生成器是第二次循环的base = (add(i, n) for i in base)。 这样就相当于三个管道依次连接,但是水(数据)还没有流过,
5 # 现在到了list(base),就相当于驱动器,打开了水的开关,这时候,按照管道的顺序,由第一个产生一个数据,yield 0,
6 # 然后第一个管道关闭。 之后传递给第二个管道就是第一次循环,此时执行了add(0, 11),然后水继续流,
7 # 到第二次循环,再执行add(11, 11),此时到管道尾巴了,第一个数据22就产生了。此时第一个管道再开放yield 1,
8 # 流程跟上面的一样。依次产生23,24,25; 直到没有数据。 把代码改一下容易理解:
9
10 def generator():
11 for i in range(4):
12 yield i #第1个管道
13
14 base = (add(i, n) for i in base) #第2个管道
15 base = (add(i, n) for i in base) #第3个管道
16
17 list(base) #开关驱动器
参考:python迭代器与生成器小结
9. 如果用py2,py3下在cmd下运行会报错吗?为什么并提出解决方案? (编码)
test.py (gbk方式保存):
#coding:GBK
print(“老男孩”)
扩展,但是在python2.x解释器中,会显式乱码,python3.x下正常显式,是因为解释器自动帮我们解码了文件内容:
通过函数化编程实现5的阶乘
1 def fn(n): 2 x = 1 3 if n == 0: #0的阶乘为1 4 x 5 else: 6 for i in range(1, n+1): 7 x *= i 8 return x 9 10 print(fn(5))
打印如下图案:
*
***
*****
*******
*****
***
*
1 def print_star(n): #n必须为奇数,此程序没有做判断
2 s = '*'
3 i = 1 #上部分,包含对称行
4 j = n #下部分
5 while i < n and i % 2 != 0:
6 print((s * i).center(n))
7 i += 2
8 while j > 0 and j % 2 != 0:
9 print((s * j).center(n))
10 j -= 2
11
12 print_star(7)
12
def outer():
count = 10
def inner():
count = 20
print(count)
return count
inner()
print(count)
outer()
(1). 分析运行结果?
1 运行结果:20
2 10
3 分析:当调用函数outer时,按顺序读函数定义部分,outer函数内部嵌套定义了inner函数,
4 读完inner函数的定义,首先调用了inner(),此时inner函数局部变量count为20,故先打印了20,然后打印了outer函数内部变量10
(2).如何让两个打印都是20
1 #方法1:将inner函数内部的count变量删除,将outer函数下的count变量赋值为20即可
2 def outer():
3 count = 20
4 def inner():
5 print(count)
6 return count
7 inner()
8 print(count)
9
10 outer()
1 #方法2:将inner函数内部变量count = 20返回给外部函数outer的变量count
2 def outer():
3 def inner():
4 count = 20
5 print(count)
6 return count
7 count = inner()
8 print(count)
9 outer()
输入一个年份,判断是否是闰年?
1 #闰年:四年一润,百年不润,四百年再润 2 def leap_year(y): 3 if y % 100 == 0: 4 if y % 400 == 0: 5 print('leap year') 6 else: 7 print('not leap year') 8 elif y % 4 == 0: 9 print('leap year') 10 else: 11 print('not leap year') 12 13 leap_year(2000)
任意输入三个数,判断大小?
1 def max_three(x, y, z): 2 return max(max(x, y),z) 3 4 print(max_three(1,2,3))
15. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222,几个数相加以及a的值由键盘控制。
1 def sum_new(a, n): #a代表求和的数字,n代表相加的次数
2 sum = 0
3 a = str(a)
4 for i in range(1, n+1):
5 x = int(a * i)
6 sum += x
7 return sum
8
9 print(sum_new(2,3))
请问程序有无bug,怎么解决?
1 f=open("a") 2 while 1: 3 choice=input("是否显示:[Y/N]:") 4 if choice.upper()=="Y": 5 for i in f: 6 print(i) 7 else: 8 break
1 #有bug, 2 # 1,只要用户输入非‘y/Y’字符,程序都会结束,这与提示信息不符合 3 # 2. ‘y/Y’只一次有效,如果用户想再次查看文件内容,必须得重启程序 4 #解决方法: 5 f = open("a") 6 while 1: 7 choice=input("是否显示:[Y/N]:") 8 if choice.upper() == "Y": 9 for i in f: 10 print(i) 11 f.seek(0) #重置文件位置于文首 12 elif choice.upper() == "N": #严格要求用户必须输入‘n/N’方可退出程序 13 break
17.
1 def foo():
2 print('hello foo')
3 return()
4 def bar():
5 print('hello bar')
(1). 为这些基础函数加一个装饰器,执行对应函数内容后,将当前时间写入一个文件做一个日志记录。
1 def timer(func):
2 def wrapper():
3 import time
4 res = func()
5 f = open('log', 'a+') #以追加的方式打开文件,没有则会创建
6 s = time.asctime() #获取当前时间:Tue Apr 18 21:46:18 2017
7 f.write(s + 'n') #将当前时间写入log文件,并换行
8 f.close() #关闭log文件
9 return res
10 return wrapper
11
12 @timer
13 def foo():
14 print('hello foo')
15 return ()
16 @timer
17 def bar():
18 print('hello bar')
19
20 foo()
21
22 bar()
(2). 改成参数装饰器,即可以根据调用时传的参数决定是否记录时间,比如@logger(True)
1 def logger(choice):
2 def timmer(func):
3 def wrapper():
4 import time
5 if choice == True:
6 res = func()
7 f = open('log', 'a+') #以追加的方式打开文件,没有则会创建
8 s = time.asctime() #获取当前时间:Tue Apr 18 21:46:18 2017
9 f.write(s + 'n') #将当前时间写入log文件,并换行
10 f.close() #关闭log文件
11 return res
12 else:
13 pass
14 return wrapper
15 return timmer
16
17 @logger(True)
18 def foo():
19 print('hello foo')
20 return ()
21 @logger(True)
22 def bar():
23 print('hello bar')
24
25 foo()
26
27 bar()
三次登陆锁定:要求一个用户名密码输入密码错误次数超过三次锁定?
1 with open('account',encoding='utf8') as f_account, open('lockedlist', 'a+') as f_locked: 2 l = [] #定义用户名验证列表,存放黑名单数据 3 f_locked.seek(0) #"a+"模式打开后,文件位置位于末尾,要遍历文件内容,需要将指针移至文件起始位置 4 for locked_info in f_locked.readlines(): #遍历黑名单 5 l.append(locked_info.strip()) #将黑名单数据添加进列表,注意:需要将文件中的换行符脱掉 6 7 c = [] #定义用户登录名列表,存储用户尝试的登录名 8 count = 1 #登陆次数计数器 9 flag = True #登陆循环控制开关 10 while flag and count < 4: 11 user = input('Please input username:') #输入用户名 12 pwd = input('Please input password:') #输入用户密码 13 if user in l: #用户名在黑名单中 14 print("This user is in blacklist,can't log in!") #打印提示信息 15 continue 16 c.append(user) 17 for info in f_account: #用户名不在黑名单中,遍历用户登陆文件 18 user_name, user_pwd = info.strip().split(',') #将文件中的用户名和登陆密码赋值给判定变量 19 if user == user_name: #用户名符合 20 if pwd == user_pwd: #对应密码符合 21 print('Welcome %s' % user) #打印登陆成功信息 22 flag = False #登陆成功,跳出登陆程序 23 break 24 count += 1 #对应密码不符合,while循环计数器加1 25 break 26 count += 1 #用户名不符合,while循环计数器加1 27 break 28 if count == 4: #如果不同用户名密码输错3次,关闭程序 29 print('More than 3 times wrong!') #打印提示信息 30 if len(c) == 3 and c[0] == c[1] == c[2]: #如果相同用户名密码输错3次,将该用户名加入黑名单,限制登陆 31 print('This user has been locked!') 32 f_locked.write(user+'n') #将错误3次的用户名写入黑名单,注意,加换行符
1. 82等于? 1 # 32 2 # 解释:将8按位左移2位 3 # 8 0 0 0 0 1 0 0 0 4 # 32 0 0 1 0 0 0 0 0
- 通过内置函数计算5除以2的余数...
- 2.x版本相对3.x - 繁杂;原代码重复性较多;缺乏规范性;然后龟叔受不了了,重整并规范Python,3.x问世;
- 2.x版本识别中文需要在首行声明: #-*-encoding: utf-8 -*- (2.x ASCLL 3.x默认Unicode)
- ...以后补充
1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
基础需求:
2.变量:数字字母下划线组成,但是不能以数字开头;约定俗成使用小写字母,命名需有可追溯性,切勿使用拼音;不能使用Python的关键词.
True
- 让用户输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后退出程序
3.常量:参照变量,但是约定俗成:全大写字母;不可更改
2)not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
升级需求:
4.注释单行 # 多行 ''' '''
False
- 可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
1 users = [['ziv', '666'], ['alex', '213']] 2 login_state = False 3 # 设置用户登陆状态为False的标志 4 count = 0 5 username_count = [] # 用来计算用户登陆次数 6 user_name = [] 7 lock_users = [] 8 f = open('lock_file.txt', 'r', encoding='utf-8') 9 # 读取文件里已被锁定用户的信息 10 for i in f: 11 lock_users.append(i.strip()) 12 while count < 3: 13 username = input('Username:').strip() 14 password = input('Password:').strip() 15 username_count.append(username) 16 # 将用户输入的用户名添加到计数列表 17 if username in lock_users: 18 exit('用户已被锁定') 19 for user_item in users: 20 if username == user_item[0] and password == user_item[1]: 21 print('登陆成功') 22 login_state = True # 登陆成功,login_state改为True 23 break # 跳出for循环 24 else: 25 print('用户名或密码错误') 26 # for 循环正常执行完(登录成功会被break,不会执行else,反之执行),再执行else 27 if login_state: 28 break # 用来跳出while循环 29 count += 1 30 else: 31 print('错误次数过多') # 登录成功while被break,不会执行else,反之执行 32 for lock in username_count: 33 user_name.append(lock) 34 if user_name.count(lock) >= 3: # 列表里面出现次数超过3次的用户名 35 lock_write = open('lock_file.txt', 'a', encoding='utf-8') 36 lock_write.write(lock+'n') 37 lock_write.close() 38 print('锁定用户:', lock)
5.数据类型:int str bool(False,True)后续补充
2、求出下列逻辑语句的值。
注:需要先创建一个lock_file.txt文件,文件可以为空。
6.条件语句:if 条件:(其他参照)else;elif;while;
1)8 or 3 and 4 or 2 and 0 or 9 and 7
7.break、continue和pass分别对应跳出循环,跳出当次循环继续下一循环,过掉当前执行代码的逻辑层次,继续执行
8
8.作业讲解反馈:
2)0 or 2 and 3 and 4 or 6 and 0 or 3
- count = count +1 简写 count += 1
- result -= count 简写 (result = result - count)
- 思维方式:解决问题的方法有很多,但是面对工作,讲究效率,切勿舍本逐末(理想的方式:先处理问题得到想要的结果,在进行代码优化)
Python 崇尚简洁 ,思考问题,需要抓住重点,一刀切入主题;间而言之.快速转换提取为数学上的逻辑进行处理
9159.com, 1 # Example 1 加法 输出 2 ''' 3 a = 10 4 b = 20 5 print(a+b) 6 ''' 7 # Example 2 循环1-10并不要7 8 ''' 9 count = 0 10 while count < 10: 11 count += 1 # count = count + 1 相同的简写法 12 if count == 7: 13 continue 14 print(count) 15 ''' 16 # Example 3 取偶数 17 ''' 18 # 方法1:(自己想的) 19 # count = 0 20 # result = 0 21 # while count < 100: 22 # count += 1 23 # result = count % 2 24 # if result != 0: # count % 2 ==1 除2求余 25 # continue 26 # else: print(count) 27 # 方法2: 28 count = 0 29 while count < 100: 30 count += 2 31 print(count) 32 ''' 33 # Example 4 求1-2+3-4+5...99的所有数的和 34 ''' 35 count = 0 # type: 36 result = 0 37 while count < 99: 38 count += 1 39 if count % 2 == 1: 40 result += count 41 else: 42 result -= count 43 print(result) 44 ''' 45 # Example 5 用户登录三次机会 46 ''' 47 # 自己写的太LOW 要抓住逻辑重点 48 # password = '' 49 # result = False 50 # count = 0 51 # sum = 0 52 # while input('请输入密码:') != '123456': 53 # count += 1 54 # sum += count 55 # if sum > 3: 56 # print('你已经三次输入错误') 57 # print('密码正确') 58 # 样板 59 i = 0 60 while i < 3: 61 username = input('请输入用户名') 62 password = int(input('请输入密码')) 63 if username == '老叶' and password == 123456: 64 print('账号密码输入正确') 65 break 66 else: 67 print('账号密码错误') 68 i += 1 69 if i == 3 : 70 print('您输入错误次数过多,请等待半小时后再登陆') 71 '''
4
3、下列结果是什么?
1)、6 or 2 > 1
6
2)、3 or 2 > 1
3
3)、0 or 5 < 4
False
4)、5 < 4 or 3
3
5)、2 > 1 or 6
True
6)、3 and 2 > 1
True
7)、0 and 3 > 1
0
8)、2 > 1 and 3
3
9)、3 > 1 and 0
0
10)、3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
2
- 简述变量命名规范
①由数字、字母、下划线组成②不能以数字开头③不能含有Python的关键字④变量可描述⑤变量不能含有中文⑥变量不能过长,用下划线链接
- name = input(“>>>”) name变量是什么数据类型?
字符串
- if条件语句的基本结构?
if 条件:
结果
- while循环语句基本结构?
while 条件:
结果
写代码:计算 1 - 2 + 3 ... + 99 中除了88之外所有数的总和?
1 count = 0 2 sum = 0 3 while count < 99: 4 count += 1 5 if count == 88: 6 continue 7 if count % 2 ==0: 8 sum -= count 9 else: 10 sum += count 11 print(sum)
用户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使用字符串格式化)
1 chance=0 2 while chance < 3: 3 username = input('请输入用户名') 4 password = input('请输入密码') 5 if username == "taibai" and password == 'jinxin': 6 print('登录成功') 7 break 8 elif username == "" or password == "": 9 print('用户名或者密码不能为空') 10 else:print('用户名或者密码错误,剩余次数为%s'%(2-chance)) 11 chance+=1
- 简述ascii、unicode、utf-8编码关系?
Assic(只有256种可能)→Unicode(16位,2/4个字节表示一个字符)→Utf-8(用最少8位表示一个字符,英文:8位1个字节;欧洲文字:16位2个字节;亚洲文字:24位3个字节;)
- 简述位和字节的关系?
1个字节=8位
- “老男孩”使用UTF-8编码占用几个字节?使用GBK编码占几个字节?
9个字节,6个字节
制作趣味模板程序需求:等待用户输入名字、地点、爱好,根据用户的名字和爱好进行任意现实 如:敬爱可亲的xxx,最喜欢在xxx地方干xxx
1 name1 = input('请输入名字:') 2 place1 = input('请输入地点:') 3 hobby1 = input('请输入爱好:') 4 msg = '敬爱可亲的%(name)s,最喜欢在%(place)s地方干%(hobby)s' 5 %{'name':name1,'place':place1,'hobby':hobby1} 6 print(msg)
等待用户输入内容,检测用户输入内容中是否包含敏感字符?如果存在敏感字符提示“存在敏感字符请重新输入”,并允许用户重新输入并打印。敏感字符:“小粉嫩”、“大铁锤”
1 comment = input('请输入内容:') 2 name1 = '小粉嫩' 3 name2 = '大铁锤' 4 while True : 5 if name1 in comment or name2 in comment: 6 print('有非法字符,从重新输入') 7 else: 8 print('评论成功') 9 break
单行注释以及多行注释?
#内容,'''内容'''
- 简述你所知道的Python3和Python2的区别?
①大环境下,PY2中含有C、php、java等语言的陋习,重复代码多②PY3编码是utf-8,PY2编码是ASCII③PY2用户输入用raw_input,PY3用户输入用input
- 看代码书写结果:
a = 1>2 or 4<7 and 8 == 8
print(a)
True
18.continue和break区别?
break退出循环,contin退出当前循环,继续下一个循环
Bit,Bytes,Kb,Mb,Gb,Tb之间的转换关系。
1bytes=8bit,1kb=1024bytes,1Mb=1024kb,1Gb=1024Mb,1Tb=1024Gb
Unicode,utf-8,gbk,每个编码英文,中文,分别用几个字节表示。
Unicode表示英文:4中文:4
Utf-8表示英文:1 中文:3
Gbk表示英文:2 中文:2
本文由9159.com发布于编程,转载请注明出处:将s中的5个字符提取出来并拼接成字符串,文件可
关键词:
下一篇:没有了