1、8<<2等于?
32
2、通过内置函数计算5除以2的余数
print(divmod(5,2))------>1
3、s=[1,"h",2,"e",[1,2,3],"l",(4,5),"l",{1:"111"},"o"],将s中的5个字符提取出来并拼接成字符串。
s1 = s[1::2]
s2 ="".join(s1)
print(s2)--->hello
4、判断"yuan"是否在[123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"],如何判断以及对应结果?
s="yuan" #定义一个变量s for i in l: if type(i) == str: #判断一级索引是否为字符串 if s in i: print("在里面") else: if type(i) != int: #当i不是int数据类型时。 for j in i: #循环列表里非字符串的类型 if type(j) == str: #判断是字符串的情况,是否包含所需元素 if s in j: print("在里面") else: #以上都不符合就没在里面 print("没在里面")
5、l=[1,2,3]
l2=l.insert(3,"hello")
print(l2)
执行结果并解释为什么?
答:执行结果是None,因为l.insert(3,"hello")是没有执行结果的,所以l2是None
6、 a=[1,2,[3,"hello"],{"egon":"aigan"}]
b=a[:]
a[0]=5
a[2][0]=666
print(a)
print(b)
#计算结果以及为什么?
答:
print(a)--->[5, 2, [666, 'hello'], {'egon': 'aigan'}]
a[0]=5 #通过下标索引定位到0的位置,修改原来的元素为5
a[2][0]=666 #通过下标索引定位到2的位置,因为2位置是一个列表,在定位列表下标索引的0位置,修改原来的元素为666
print(b)--->[1, 2, [666, 'hello'], {'egon': 'aigan'}] #b=a[:]中括号里面的冒号两边没有写值,表示取所有
7 使用文件读取,找出文件中最长的行的长度(用一行代码解决)?
max(len(f.readlines())
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)
9
hello.py (gbk方式保存):
#coding:GBK
print(“老男孩”)
如果用py2,py3下在cmd下运行回报错吗?为什么并提出解决方案? (编码)
答:# _*_ coding:gbk _*_
name = "老男孩"
print (name)
1、在CMD下运行py2和py3,都不会报错,因为CMD系统默认的编码格式就是GBK;
2、不在CMD下,运行py3时,不会报错。因为py3里字符串本身就是unicode。是不需要解码的;
运行py2时,会出现乱码,因为py2里字符串本身是Bytes文件,要转成明文的话,就要把name解码成unicode。
print(name.decode("gbk"))------->老男孩
10 通过函数化编程实现5的阶乘
def jiecheng(n): '''进行阶乘''' if n ==1: return 1 else : return jiecheng(n-1)*n print(jiecheng(5))
11 打印如下图案:
*
***
*****
*******
*****
***
*
#看到这个菱形,分析:得分成两部分,上面四行为一部分,下面三行为另一部分
方法一:
n = 7 str = "*" for i in range(4): print((str*(i*2+1)).center(n)) for i in range(3): print((str*(5-2*i)).center(n))
方法二:
n = 7 for i in range(1,n+1): if i%2 == 1: print(("*"*i).center(n)) for i in reversed(range(1,n)): if i%2 == 1: print(("*"*i).center(n))
方法三:
from sys import stdout for i in range(4): for j in range(2-i+1): stdout.write(" ") for k in range(2*i+1): stdout.write("*") print() for i in range(3): for j in range(i+1): stdout.write(" ") for k in range(4-2*i+1): stdout.write("*") print()
12
def outer():
count = 10
def inner():
count = 20
print(count)
inner()
print(count)
outer()
(1)分析运行结果?
(2)如何让两个打印都是20
不好意思,老师,没时间做了。
13 输入一个年份,判断是否是闰年?
def judge(year): #闰年的规则:四年一闰,百年不闰,四百年又闰 if (year%4 == 0 and year%100 != 0) or year%400 == 0 : return True else: return False print(judge(2017)) #输入年份进行判断是否为闰年 #用匿名函数表示: judge = lambda year : True if ((year%4 == 0 and year%100 != 0) or year%400 == 0) else False print(judge(2017)) #输入年份进行判断是否为闰年 ---------输出结果------- False #表示不是闰年 False #表示不是闰年
14 任意输入三个数,判断大小?
l = [] while True: choice = input("请输入您的数字:") if choice == "b": break else: l.append(int(choice)) print(max(l))
15 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222
,几个数相加以及a的值由键盘控制。
不好意思,老师,没时间做了。
16 f=open("a")
while 1:
choice=input("是否显示:[Y/N]:")
if choice.upper()=="Y":
for i in f:
print(i)
else:
break
请问程序有无bug,怎么解决?
不好意思,老师,没时间做了。
17
def foo():
print('hello foo')
return()
def bar():
print('hello bar')
(1)为这些基础函数加一个装饰器,执行对应函数内容后,将当前时间写入一个文件做一个日志记录。
import time #定义装饰器阶段 def timmer(func): def wrapper(): func() with open("日志文件",mode="a",encoding="utf8") as f_add: f_add.write(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" ") return wrapper @timmer #调用装饰器 def foo(): print("hello foo") return @timmer #调用装饰器 def bar(): print("hello bar") #调用函数阶段 foo() bar() -----------------文件记录结果----------------------- 2017-04-19 00:21:04 2017-04-19 00:21:04 2017-04-19 00:21:09 2017-04-19 00:21:09
(2)改成参数装饰器,即可以根据调用时传的参数决定是否记录时间,比如@logger(True)
import time #有参装饰器定义 def decide(flag): def timmer(func): def wrapper(): if flag == True: func() with open("日志文件",mode="a",encoding="utf8") as f: f.write(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+" ") return wrapper return timmer #调用装饰器(传参) @decide(True) def foo(): print("hello foo") return @decide(False) def bar(): print("hello bar") #函数调用阶段 foo() bar() ----------------文件记录结果--------------------- 2017-04-19 00:24:02 2017-04-19 00:24:02 2017-04-19 00:24:04 2017-04-19 00:24:04
18 三次登陆锁定:要求一个用户名密码输入密码错误次数超过三次锁定?
def match(name,pwd): '''匹配用户输入的信息,进行判断''' falg = True while falg: with open("test",mode="r",encoding="utf8") as f_read,open("test2",mode="r",encoding="utf8") as f1_read: fread = f_read.readlines() f1read = f1_read.readlines() for lines in f1read:#循环黑名单里的内容 if name == lines:#判断是否在黑名单里,在就锁定退出 falg = False#退出while循环 print("This user has been locked!") if falg ==False: break #退出黑名单循环 for line in fread:#循环用户信息库,进行判断是否正确 if name in line and pwd in line : verdict = True#输入正确为True,退出循环 break else: verdict = False#输入错误为False,跳出本次循环 continue if verdict == True:#因为用户信息库里有很多用户信息,so,要拿出来判断 print("welcome %s" % (name)) falg = False if verdict == False: print("You input the username or password error") decide(name)#当输入错误时,调用decide函数 falg = False def decide(name): '''写入用户输入错误的用户名,达到一定的次数,把该用户写入黑名单''' count = 0#计数器,用于记录输入错误用户的次数 with open("test1",mode="a+",encoding="utf8") as f_add: f_add.write(" "+name)#往文本写错误用户的信息 f_add.seek(0)#把光标移到最开始位置 fadd = f_add.readlines()#获取输入错误用户的信息 for i in range(len(fadd)):#循环列表fadd fadd[i] = fadd[i].replace(' ', '')#去掉每行中的“ ”,用于下面的比对 for line in fadd:#此时的fadd里已没有多余的空格,便于比对 if name == line:#当有重复的用户名,累加一次 count += 1 #匹配后自加1 if count > 2:#当输入3次时,就调用black函数 black(name) def black(name): '''黑名单,输入达到次数的用户,被锁定在黑名单''' with open("test2",mode="a+",encoding="utf8") as f_add: f_add.seek(0)#移动光标至最开始位置 fadd = f_add.readlines()#获取黑名单信息 for line in fadd:#循环黑名单,有重复的用户不会被写入 if name == line : break #有重复的信息退出,不再写入黑名单 f_add.write(" "+name)#写入黑名单 while True: name = input("Please input your username:").strip() if len(name) == 0: print("Input is wrong, please input again") continue if name =="q":#输入q退出 print("ByeBye!") break pwd = input("Please input your password:").strip() match(name, pwd)#调用match函数,匹配输入信息