这题用python算法题怎么做

<< 上一篇: ( 23:40) >> 下一篇: ( 23:40)1.使用while循环输入1 2 3 4 5 6 8 9 10#!/usr/bin/env python
#-*- coding:utf-8 -*-
while True:
if a == 7:
if a == 10:
break2.求1-100的所有数的和#!/usr/bin/env python
#-*- coding:utf-8 -*-
while True:
sum = sum + start
if start == 100:
start += 1
print(sum)3.输出1-100内的所有奇数#!/usr/bin/env python
#-*- coding:utf-8 -*-
while True:
if start % 2 == 1:
print(start)
start += 1
if start & 100:
break4.输出1-100内的所有偶数#!/usr/bin/env python
#-*- coding:utf-8 -*-
while True:
if start % 2 == 0:
print(start)
start += 1
if start & 100:
break5.求1-2+3-4+5..99的所有数的和
#!/usr/bin/env python
#-*- coding:utf-8 -*-
while start & 100:
if start % 2 == 1:
sum = sum + start
sum = sum - start
start += 1
print(sum)显示等式验证方法:#!/usr/bin/env python
#-*- coding:utf-8 -*-
while start & 100:
if start % 2 == 1:
if start == 1:
s = str(start)
s = s + "+" + str(start)
sum = sum + start
s = s + "-" + str(start)
sum = sum - start
start += 1
print(sum)6.用户登陆(三次机会重试)
while i & 4:
user = raw_input("UserName:")
pwd = raw_input("PassWord:")
if user == "alex" and pwd == "123":
print("true")
print("flase")
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至: 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。代码思路:
1、读取 txt 文档,文件基本操作
2、遇到了 编码问题
这里用到了Unidode强制编码函数,将其转化为‘utf_8_sig’格式,经过实践证明可以。
这里说一下编码问题,Python2默认编码方式是ANSII码,遇到中文编码问题,网上解决方法如下:
sys 设置 defaultencode,经过测试 python2.7版本不能用,python3.5可用
即下面代码的方法,强制编码,txt文件可在sublim/notebook转化为utf8编码的方式。
lis = unicode(lis, encoding=
lis.encode(
3.接下来,查找题目。
为了出题随机,我们随机提取的行数如下,其中line_start[i]为该部分最开始的行数
p=random.randint(1,50)+line_start[i]
我们暂定为 往下 15行为文本提取的内容。(为什么是15行呢, 因为最长的题目不超过15行)
这里用到了正则表达式,题目的起始符号为
“ 数字+、”。
正则表达式,这里又遇到一个坑,这个坑是什么呢?大家可以试一试,中文的标点符号正则表达匹配不出来
原因是先要把待匹配的转化为utf8字符,再进行匹配,这里”、”这个符号的UTF8编码是u3001,具体代码如下:
这里 ww.S 即 re.S , 因为 我 import re as ww, 至于为什么这样,因为遇到了我也不知道的bug,说 re 不行,那就as W喽。
lis = unicode(lis, encoding='utf_8_sig' )
lis.encode('utf-8')
lis=ww.findall(u"(\d+[\u3001].*?)\d+[\u3001]",lis,ww.S)
这样我们就得到了提取到的题目
4、题目分配算法
接下来,题目有很多部分,那么怎么划分呢?
按照权重来喽,为了确保
5、出题随机算法
为了确保题目覆盖范围,足够随机,可调整。
line_end是 该部分结束的行数,p是当前行数,counts 是总题目数,time_i是当前的题目数
这里的算法思路是,整体均衡,动态调整 。
p为行数,是决定当前题目的。为了随机,我们让p+随机数。
imp=get_imp(line_end[i],p,counts[i],time_i)
为了均衡, imp 数学期望确保 = 总行数/题目数
那么如何动态调整呢,这里用到了梯度下降算法(这就有点装了,其实不过是一阶龙哥库塔,或者泰勒一阶展开,其实就是 y(t+Δt)=y+y(t)’*Δt,很简单。
ans=int((line_end-p)/counts
为了照顾大题少,小题多,大题靠后,这里稍微倾斜了一下。
def get_imp(line_end,p,counts,time_i):
ans=int((line_end-p)/counts)
if 1.0*time_i/counts&0.75:
imp=random.randint(1,5*ans-1)
imp=random.randint(1,ans-1)
return imp
6、保存文件
这里使用时间名字进行保存,为了避免重复。
全部代码如下:
import random
import re as ww
import sys
import time
def re(lis):
lis = unicode(lis, encoding='utf_8_sig' )
lis.encode('utf-8')
lis=ww.findall(u"(\d+[\u3001].*?)\d+[\u3001]",lis,ww.S)
if len(lis)==0:
for y in range(1,85):
lis=lis+s[p+y]
lis = unicode(lis, encoding='utf_8_sig' )
lis.encode('utf-8')
lis=ww.findall(u"(\d+[\u3001].*?)\d+[\u3001]",lis,ww.S)
lis = unicode(lis, encoding='utf_8_sig')
return lis[0]
return "You are so fine that I cannot help missing u"
def search(p):
if 33&p&1271:
m="第一章 会计管理及反洗钱类 单选题"
elif 1270&p&2147:
m="第一章 会计管理及反洗钱类 多选题"
elif 2146&p&2595:
m="第一章 会计管理及反洗钱类 判断题"
elif 2594&p&3086:
m="第一章 会计管理及反洗钱类 简答题"
elif 3085&p&3508:
m="第二章 个人金融类 单选题"
elif 3507&p&3772:
m="第二章 个人金融类 多选题"
elif 3774&p&3881:
m="第二章 个人金融类 判断题"
elif 3880&p&3953:
m="第二章 个人金融类 简答题"
def get_lines():
line_num=[3053,872,310,440,635]
line_start=[0,3085,3952,4262,4701]
line_end=[3086,3953,4263,4702,5333]
return line_num,line_start,line_end
def get_count(n1,n2,n3,n4,n5,count):
sum_n=n1+n2+n3+n4+n5
sum_n=sum_n*1.0
counts.append(count-int(count*n2/sum_n)-int(count*n3/sum_n)-int(count*n4/sum_n)-int(count*n5/sum_n))
counts.append(int(count*n2/sum_n))
counts.append(int(count*n3/sum_n))
counts.append(int(count*n4/sum_n))
counts.append(int(count*n5/sum_n))
return counts
def xiaohua():
lisxiaohua=["Wanna to see U","You Guess~How much I miss U","我家慧慧可可爱了","I miss U ,like the sea","Sincerely,yours "]
xhNum=random.randint(0,len(lisxiaohua)-1)
xiaohua=lisxiaohua[xhNum]+"\n"
return xiaohua
def get_imp(line_end,p,counts,time_i):
ans=int((line_end-p)/counts)
if 1.0*time_i/counts&0.75:
imp=random.randint(1,5*ans-1)
imp=random.randint(1,ans-1)
return imp
def ma(n1,n2,n3,n4,n5,count,part):
str1=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
str2=str1.replace(':','_')
str1="测试时间".decode('utf8')+str2+".txt"
ff = open(str1,'w')
ff.close()
ff = open(str1,'w')
counts=get_count(n1,n2,n3,n4,n5,count)
unicode_str = unicode('中文', encoding='utf_8_sig' )
print unicode_str.encode('utf-8')
default_encoding = 'utf8'
if sys.getdefaultencoding() != default_encoding:
print sys.getdefaultencoding()
f=open('TIKU.txt','r')
s=f.readlines()
print len(s)
line_num,line_start,line_end=get_lines()
for i in range(0,part):
ff.writelines("************************SECRET*************************\n")
ff.writelines("第"+str(i+1)+"部分"+" 题目数量"+str(counts[i])+"\n")
ff.writelines("************************SECRET*************************\n")
if i == 0 :
p=random.randint(28,88)
p=random.randint(1,50)+line_start[i]
lenth=line_end[i]
while(p&lenth and time_i&counts[i]):
for y in range(1,20):
if p+y&len(s):
lis = "天荒地老"
lis=lis+s[p+y]
m=search(p)
number="\n"+"第"+str(l)+"题"+" "+m+"\n"
lis=re(lis)
for tt in range(len(lis)):
a+=str(lis[tt].encode('utf8'))
ff.writelines(number)
ff.writelines("\n"+a+"\n")
if l%3==0:
if random.randint(0,10)&6:
xh=xiaohua()
ff.writelines(xh+"\n")
if l%30==0:
ff.writelines("小慧慧,休息一下啦\n")
imp=get_imp(line_end[i],p,counts[i],time_i)
time_i=time_i+1
ff.close()
def mam(p):
for i in range(0,p):
ma(80,40,30,15,15,100,5)
time.sleep(1)
PS.过两天我会上传另外一个版本,是简单的数学问题。希望实现百词斩的算法。如果时间充足,搞一个基于机器学习的简单的分类器。目前计划:
0、提取题目,将题目分类。小包括数字个数,类划分使用特征词汇的方法。
1、将题目存入数据库或者列表。由于比较小,存成csv格式应该差不多足够了。
2、设置一个记录做对/错的记录列表。暂时用列表。
3、针对性对错题 在生成试卷的过程中再出现。
预期目标:输入txt文本文件,能够实现出题/界面程序/猿题库或者百词斩形式,假期用两三天完成吧。有愿意开发的一起哦~
邮箱:sx1995@buaa.edu.cn
在线考试系统之随机抽取试题
这几天做了一个在线考试系统,下面是数据表。
大概思路:就是根据学生选择的老师和科目
得到那个老师对于这个科目的题型设置 ——然后根据题型设置取到对应科目的题集——再随机选出老师设置对应题目类...
python 生成随机的测验试卷文件
# -*-coding:utf-8-*-
import random
capitals = {'henan': 'zhengZhou', 'anhui': 'heFei', 'guangdong':...
1000道Python题库系列分享五(40道)
上一期题目链接:1000道Python题库系列分享四(40道)上一期参考答案:本期题目:----------相关阅读----------教学课件1900页Python系列PPT分享一:基础知识(106...
python生成随机的测验试卷
假如你是一名老师,班上有45名同学,想要给他们进行一次测验,但又怕学生作弊,所以就想随机生成45份试卷,试卷题目都一样,只是随机打乱试题和答案顺序。
1.将所有题目和答...
1058. 选择题(20) python 篇
1058. 选择题(20)
代码长度限制
Standar...
Python批量提取Word文件题库中的答案
问题描述:假设有Word文件“Python题库.docx”中有若干Python题目(目前有1000道,已在公众号内分享第一期1000道Python题库系列分享一(17道))和对应的答案。其中答案在一对...
整理的一些PYTHON笔试面试题目
Python是如何进行内存管理的?
答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制
一、对象的引用计数机制
python内部使用引用计数,来保持追踪内存中的对...
1000道Python题库系列分享四(40道)
热烈庆祝2018年2月董付国老师《Python程序设计(第2版)》出版18个月第5次印刷,《Python可以这样学》出版12个月第5次印刷,系列教材《Python程序设计基础》、《Python程序设计...
Python答题:LinteCode简单题库(一)
366. 斐波纳契数列:查找斐波纳契数列中第 N 个数。
所谓的斐波纳契数列是指:
前2个数是 0 和 1 。
第 i 个数是第 i-1 个数和第i-2 个数的和。
斐波纳契数列的前10个...
1000道Python题库系列分享一(17道)
本系列题目共约1000道,下一期题库分享时发布本期题目参考答案,可以在微信公众号菜单查看系列题目。1.1
到Python官方网站下载并安装Python解释器环境。1.2
到Anaconda官方网站...
没有更多推荐了,深入解答关于Python的11道基本面试题
&更新时间:日 08:39:42 & 作者:菜鸟学Python
这篇文章主要介绍了关于Python的11道基本面试题,其中单引号,双引号,三引号的区别、Python的参数传递是值传递还是引用传递以及什么是lambda函数?它有什么好处?等一系列的基础面试题,文中给出了详细的解答,需要的朋友可以参考学习。
本文给大家深入的解答了关于Python的11道基本面试题,通过这些面试题大家能对python进一步的了解和学习,下面话不多说,来看看详细的介绍吧。
一、单引号,双引号,三引号的区别
分别阐述3种引号用的场景和区别
1),单引号和双引号主要用来表示字符串
单引号:'python'
双引号:"python"
三单引号:'''python ''',也可以表示字符串一般用来输入多行文本,或者用于大段的注释
三双引号:"""python""",一般用在类里面,用来注释类,这样省的写文档,直接用类的对象__doc__访问获得文档
若你的字符串里面本身包含单引号,必须用双引号
比如: "can't find the log\n"
二、Python的参数传递是值传递还是引用传递
举例说明Python函数参数传递的几种形式,并说明函数传参是值传递还是引用传递
1).Python的参数传递有:
默认参数,
关键字参数
2).函数的传值到底是值传递还是引用传递,要分情况
a.不可变参数用值传递:
像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可变对象
b.可变参数是用引用传递的
比如像列表,字典这样的对象是通过引用传递,和C语言里面的用指针传递数组很相似,可变对象能在函数内部改变.
三、什么是lambda函数?它有什么好处&#63;
举例说明lambda的用法,并说明用lambda的优点
1).lambda的用法:
lambda是匿名函数,用法如下:lambda arg1,arg2..argN:expression using args
lambda能和def做同样种类的工作,特别是对于那些逻辑简单的函数,直接用lambda会更简洁,而且省去取函数名的麻烦(给函数取名是个技术活)
四、字符串格式化:%和.format的区别
字符串的format函数非常灵活,很强大,可以接受的参数不限个数,并且位置可以不按顺序,而且有较为强大的格式限定符(比如:填充,对齐,精度等)
五、Python是如何进行内存管理的
1).对象的引用计数机制
Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。
引用计数增加的情况:
一个对象分配一个新名称
将其放入一个容器中(如列表、元组或字典)
引用计数减少的情况:
使用del语句对对象别名显示的销毁
引用超出作用域或被重新赋值
2).垃圾回收
当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。
3).内存池机制
Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统:
Pymalloc机制:为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。
对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。
六、写一个函数, 输入一个字符串, 返回倒序排列的结果
输入: string_reverse(‘abcdef') , 返回: ‘fedcba',写出你能想到的多种方法
1).利用字符串本身的翻转
def string_reverse1(text='abcdef'):
return text[::-1]
2).把字符串变成列表,用列表的reverse函数
3).新建一个列表,从后往前取
4).利用双向列表deque中的extendleft函数
七、按升序合并如下两个list, 并去除重复的元素
list1 = [2, 3, 8, 4, 9, 5, 6]
list2 = [5, 6, 10, 17, 11, 2]
1).最简单的方法用set
list3=list1+list2
print set(list3)
先选一个中间数,然后一边是小的数字,一边是大的数字,然后再循环递归,排完序(是不是想起了c里面的冒泡)
八、以下的代码的输出将是什么&#63; 说出你的答案并解释
class Parent(object):
class Child1(Parent):
class Child2(Parent):
print Parent.x, Child1.x, Child2.x
Child1.x = 2
print Parent.x, Child1.x, Child2.x
Parent.x = 3
print Parent.x, Child1.x, Child2.x
使你困惑或是惊奇的是关于最后一行的输出是 3 2 3 而不是 3 2 1。为什么改变了 Parent.x 的值还会改变 Child2.x 的值,但是同时 Child1.x 值却没有改变?
这个答案的关键是,在 Python中,类变量在内部是作为字典处理的。如果一个变量的名字没有在当前类的字典中发现,将搜索祖先类(比如父类)直到被引用的变量名被找到.
首先,在父类中设置 x = 1 会使得类变量 x 在引用该类和其任何子类中的值为 1。这就是因为第一个 print 语句的输出是 1 1 1
然后,如果任何它的子类重写了该值(例如,我们执行语句 Child1.x = 2)该值仅仅在子类中被改变。这就是为什么第二个 print 语句的输出是 1 2 1
最后,如果该值在父类中被改变(例如,我们执行语句 Parent.x = 3),这个改变会影响到任何未重写该值的子类当中的值(在这个示例中被影响的子类是 Child2)。这就是为什么第三个 print 输出是 3 2 3
九、下面的代码会不会报错
list = ['a', 'b', 'c', 'd', 'e']
print list[10:]
不会报错,而且会输出一个 [],并且不会导致一个 IndexError
当试图访问一个超过列表索引值的成员将导致 IndexError(比如访问以上列表的 list[10])。尽管如此,试图访问一个列表的以超出列表长度数作为开始索引的切片将不会导致 IndexError,并且将仅仅返回一个空列表
一个讨厌的小问题是它会导致出现 bug ,并且这个问题是难以追踪的,因为它在运行时不会引发错误,吐血啊~~
十、说出下面list1,list2,list3的输出值
def extendList(val, list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print "list1 = %s" % list1
print "list2 = %s" % list2
print "list3 = %s" % list3
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']
许多人会错误的认为 list1 应该等于 [10] 以及 list3 应该等于 ['a']。认为 list 的参数会在 extendList 每次被调用的时候会被设置成它的默认值 []。
尽管如此,实际发生的事情是,新的默认列表仅仅只在函数被定义时创建一次。随后当 extendList 没有被指定的列表参数调用的时候,其使用的是同一个列表。这就是为什么当函数被定义的时候,表达式是用默认参数被计算,而不是它被调用的时候。
因此,list1 和 list3 是操作的相同的列表。而list2是操作的它创建的独立的列表(通过传递它自己的空列表作为list参数的值)
所以这一点一定要切记切记.下面我们把list置为None就可以避免一些麻烦了
十一、写出你认为最Pythonic的代码
Pythonic编程风格是Python的一种追求的风格,精髓就是追求直观,简洁而容易读.
下面是一些比较好的例子
1).交互变量
非Pythonic
2).判断其值真假
name = 'Tim'
langs = ['AS3', 'Lua', 'C']
info = {'name': 'Tim', 'sex': 'Male', 'age':23 }
非Pythonic
if name != '' and len(langs) & 0 and info != {}:
print('All True!')
if name and langs and info:
print('All True!')
3).列表推导式
[x for x in range(1,100) if x%2==0]
4).zip创建键值对
keys = ['Name', 'Sex', 'Age']
values = ['Jack', 'Male', 23]
dict(zip(keys,values))
pythonic的代码很多,这里举几个典型的例子
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具PythonTip - python学习、在线编程、acm题目分类
Python之禅--大道至简
在PythonTip,我能做什么?
Python入门
Python是一门简单易学且功能强大的编程语言。
优雅的语法和动态类型,编写python犹如书写闲文,悠闲而惬意。
体验Python
尝试编写几行python代码,进来尽情体验python编程的快乐吧,体验她的简洁之美,优雅之美!
挑战Python
如果你是一位勇敢的Pythoner,那就不要犹豫,进来挑战Python吧,不断失败,不断学习,不断进步,挑战就是新生。
深刻的技术用通俗易懂的语言表达,简明易懂的表述,技术不再神秘,悦读技术博文,复杂而深刻的技术真谛跃然纸上。
笑问Python
如果你是Python新人,你有很多疑问,那么不要迟疑,进来发问吧,高手在等你;如果你是Python大牛,那么请进来贡献你的智慧为他人答疑解惑。
Django入门
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。
Python资源分享
在这里,你可以找到百种热门python学习资源,各种手册、入门教程等待你的开启;各种深入探究等着你来探索,Get It and Read It。
Python ACMer
如果你是一位ACMer,请走进这里,在这有各大OJ的题目分类及比赛列表,用你的深厚的coding功力,到各大OJ赛场大展身手吧。
如果在使用本站的过程中感觉有所不便,或者您希望我们添加某些功能,欢迎在此吐槽,我们会根据您的反馈逐步完善。

我要回帖

更多关于 python编程题 的文章

 

随机推荐