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()))+"\n")
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()))+"\n")
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("\n"+name)#往文本写错误用户的信息
f_add.seek(0)#把光标移到最开始位置
fadd = f_add.readlines()#获取输入错误用户的信息
for i in range(len(fadd)):#循环列表fadd
fadd[i] = fadd[i].replace('\n', '')#去掉每行中的“\n”,用于下面的比对
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("\n"+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函数,匹配输入信息

  

py4测试题的更多相关文章

  1. python----测试04.18

    # py4测试题 # 1.8 << 2 # 等于? 8转化成二进制:1000 向左移动2位: 0010 0000 转化成十进制:32 # 2.通过内置函数计算5除以2的余数 print(d ...

  2. python考试

    py4测试题 1.8<<2等于?322.通过内置函数计算5除以2的余数 divmod(5,2)3.s=[1,"h",2,"e",[1,2,3],&q ...

  3. Python之基础练习题

    Python之基础练习题 1.执行 Python 脚本的两种方式 2.简述位.字节的关系 解:8位是一个字节 3.简述 ascii.unicode.utf-8.gbk 的关系 4.请写出 “李杰” 分 ...

  4. Android基础测试题(四)

    看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...

  5. Android基础测试题(二)

    今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...

  6. mysql测试题

    MySQL测试题 一.表关系 请创建如下表,并创建相关约束 创建数据库create database school charset utf8; 建表create table class(cid int ...

  7. 百度在线笔试编程测试题(Python):整数分解成素数的积

    编程测试题: 输入一个正整数将其分解成素数的乘积,输入格式连续输入m个数,然后将这m个数分别分解,如 输入: 2 10 20 输出: 2 5 2 2 5 Python code: def primes ...

  8. ES6入门系列四(测试题分析)

    0.导言 ES6中新增了不少的新特性,来点测试题热热身.具体题目来源请看:http://perfectionkills.com/javascript-quiz-es6/. 以下将一题一题来解析what ...

  9. hadoop概述测试题和基础模版代码

    hadoop概述测试题和基础模版代码 1.Hadoop的创始人是DougCutting?() A.正确 B.错误答对了!正确答案:A解析:参考课程里的文档,这个就不解释了2.下列有关Hadoop的说法 ...

随机推荐

  1. Python 16 html 基础 jQuery & Javascript研究

    基础内容 DOM操作 javascript探讨 JQuery初识 DOM innerText  ==>获取仅文本 innerHtml  ==>获取全部内容 <div id=" ...

  2. 【blog】MarkDown语法解析为HTML工具

    txtmark <dependency> <groupId>es.nitaur.markdown</groupId> <artifactId>txtma ...

  3. 2017-2018-2 20165237 实验二《Java面向对象程序设计》实验报告

    ##2017-2018-2 20165237 实验二<Java面向对象程序设计>实验报告 No.1 实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/r ...

  4. 20165237 2017-2018-2 《Java程序设计》第1周学习总结

    20165237 2017-2018-2 <Java程序设计>第1周学习总结 教材学习内容总结 1.平台=OS(操作系统)+CPU 2.Java具有简单.面向对象.平台无关和动态性. 3. ...

  5. eclipse常用快捷键和插件

    1.快捷键 找实现类  ctrl +T 抽取為方法:alt+shift+M (Method) 方法返回值 ctrl+1 enter 2.在做Java项目的时候如何把第三方的jar包一起打包成jar文件 ...

  6. roslaunch & gdb 调试指南(待补充)

    1. 安装xterm sudo apt-get install xterm 2. 在launch文件中添加如下内容: <node name="navigation" pkg= ...

  7. 【SVN】SVN初识

    SVN 介绍 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Sub ...

  8. Centos 6.x/7.x yum安装php5.6.X(最新版)

    鉴于Centos 默认yum源的php版本太低了,手动编译安装又有点一些麻烦,那么如何采用Yum安装的方案安装最新版呢.那么,今天我们就来学习下如何用yum安装php最新版. 1.检查当前安装的PHP ...

  9. Ubuntu16下apache2安装ssl阿里云证书

    1.用下面的命令确保ssl模块已经加载进apache: a2enmod ssl 如果你看到了“Module ssl already enabled”这样的信息就说明你成功了,如果你看到了“Enabli ...

  10. $Django cookies与session--解决无连接无状态问题, session配置

    session作用: 会话保持,记住用户的登录状态(WEB网站,分布式架构) 作用(和cookie的区别) 避免了敏感信息保存在客户端,防止客户端修改cookie信息! -cookie:存储在客户端浏 ...