‘壹’ python 解决你的实际问题可以在哪些地方找资料
Python 标准库:
应该浏览一下这份文档,它为标准库中的类型、函数和模块提供了完整(尽管很简略)的参考资料。标准的 Python 发布版包括了 大量 的附加模块。其中有针对读取 Unix 邮箱、接收 HTTP 文档、生成随机数、解析命令行选项、写 CGI 程序、压缩数据以及很多其它任务的模块。略读一下库参考会给你很多解决问题的思路。
安装 Python 模块 展示了如何安装其他 Python 用户编写的附加模块。
Python 语言参考: 详细说明了 Python 语法和语义。
它读起来很累,不过对于语言本身,有份完整的手册很有用。
其它 Python 资源:
http://www.python.org: Python 官方网站。它包含代码、文档和 Web 上与 Python 有关的页面链接该网站镜像于全世界的几处其它问题,类似欧洲、日本和澳大利亚。
镜像可能会比主站快,这取决于你的地理位置。
http://docs.python.org: 快速访问 Python 的文档。
http://pypi.python.org: Python 包索引,以前昵称为奶酪店,索引了可供下载的,用户创建的 Python 模块。如果你发布了代码,可以注册到这里,这样别人可以找到它。
http://code.activestate.com/recipes/langs/python/: Python 食谱是大量的示例代码、大型的集合,和有用的脚本。
值得关注的是这次资源已经结集成书,名为《Python 食谱》(O’Reilly & Associates, ISBN 0-596-00797-3。)
http://scipy.org: The Scientific Python 项目包括数组快速计算和处理模块,和大量线性代数、傅里叶变换、非线性solvers、随机数分布,统计分析以及类似的包。
与 Python 有关的问题,以及问题报告,可以发到新闻组 comp.lang.python ,或者发送到邮件组 [email protected] 。新闻组和邮件组是开放的,所以发送的消息可以自动的跟到另一个之后。每天有超过 120 个投递(高峰时有数百),提问(以及回答)问题,为新功能提建议,发布新模块。在发信之前,请查阅 常见问题 (亦称 FAQ),或者在 Python 源码发布包的 Misc/ 目录中查阅。邮件组也可以在 http://mail.python.org/pipermail/ 访问。FAQ回答了很多被反复提到的问题,很可能已经解答了你的问题。
Next Previous
‘贰’ Python在构建可执行的麻烦问题,怎么解决
python的整个系统,我其实有非常多的不满。但是用任何一门语言都是取舍问题,如果有一门语言,库够多,已读,易用,性能高,我毫不犹豫立刻转过去。python的强处在于庞大的库,还有非常好的易读和易用性。但是相比来说,性能一直是个问题。python的实现性能大约和C相差五倍上下。如果是大规模计算问题,大约能差10倍以上。当然,我们可以写C扩展,但是这就不是使用python了。我们也可以说,很多时候我们不需要这么快的速度。这是个事实,但是不改变python性能差的事实。 python不但性能差,还有GIL这个玩意。以至于我现在对高并发计算都采取多进程的模式。多进程模式的通讯效率肯定比多线程低,而且麻烦。
另外,python在底层设计上,也表现出很强的实用主义倾向。这是比较外交术语的词汇,更加直白的说法应当是,混乱,不知所谓。在闭包设计上采用free variable设计,而不是lisp中的environs设计。区别?你试试看在外层闭包中from lib import *。由于引入不定个数名称,free variable无法处理。类似的问题还有LEGB规则,新手往往要花很长时间研究这个例子究竟是怎么错的: a = 1 def f(): print a a = 2 我勒个去,这种反直观反人类的事情都有,还敢说自己易读。
还有坑爹的元编程,这东西根本是坑爹中的坑爹货。如果你用过多重继承,大概就知道python的整个OO系统看起来根本是大型的仿真,到处都是乱糟糟的。C++怎么解决多重继承的?你最好别用(真心说,这可比python更加坑爹)。java怎么解决多重继承的,只能继承Interface。其实这是变相的变成了Interface-Implement模式。python怎么解决的?MRO!为什麽一个类加个__metaclass__就会改变性质啊,为什麽一个类去生成另一个类的写法是——我基本不记得了,反正web.py里面有用到,需要的话去炒栗子吧。为什麽方法要隐藏居然要改名字加__啊。你到底是在做OO还是在看起来像OO的东西上狂打补丁啊魂淡。
lambda表达式弱智。我和人讨论过,lambda是否是图灵完备的。结论还是完备的,不过需要借助Y combinator。何必呢?由于强调lambda的快速特性,因此将lambda强制在一行以内(没有结束标记),导致python其实是没有匿名函数的。一个callback数组写的难过死。
语法糖太多了点,当然,这是纯粹的个人感觉。语法糖是把双刃剑,用的好,可以简化编写和阅读,但是太多,往往容易引入语法混乱和额外的约束。
另外,语言的自构建特性混乱。虽说不是每门语言都强调自构建特性,但是通常而言,都是使用C实现一个内核,由内核实现一些基础操作。再由基础操作实现更复杂的操作。每层的边界都是比较清晰的。谁来告诉我,python中有多少库在移植时是由纯python实现的?库的相互依赖层级是?
python的沙盒化也是个问题,如果沙盒做的够好,我完全可以把python作为一个客户级别的平台。用C写一个很简单的类似浏览器的东西,下载一个URL的python包回去运行(或者仅仅检查更新)。从而保证本地效果/跨平台/安全性。现在?一个都保证不了。我连把一个python包转移到另一台同构设备上都很麻烦(如果两者不是严格匹配,例如系统差异,系统版本差异)无论是web开发还是移动终端开发都必须走传统模式。
Time/System Time 时间/系统时间
‘叁’ 用python来解决列表问题
虽然实现的方式不优雅,但确实能够解决你的问题,代码如下:
def plastic(l):
l_sort = sorted(l)
result = list(range(len(l)))
for n,i in enumerate(l_sort,1):
result[l.index(i)] = n
return result
S=[[5,4,3,2,0],[6,5,4,0,1],[0,6,5,1,2],[1,7,6,0,3]]
S=list(map(plastic,S))
print(S)
输出:
[[5, 4, 3, 2, 1], [5, 4, 3, 1, 2], [1, 5, 4, 2, 3], [2, 5, 4, 1, 3]]
‘肆’ python请用递归算法编程解决汉诺塔问题 在线等
这是Python3系统自带的一个例子,估计就是这个意思,本来他是6个盘子,按照你要求改成4个了。递归算法没问题,描述也非常详细 ;)
#!/usr/bin/envpython3
fromturtleimport*
classDisc(Turtle):
def__init__(self,n):
Turtle.__init__(self,shape="square",visible=False)
self.pu()
self.shapesize(1.5,n*1.5,2)#square-->rectangle
self.fillcolor(n/6.,0,1-n/6.)
self.st()
classTower(list):
"Hanoitower,asubclassofbuilt-intypelist"
def__init__(self,x):
"createanemptytower.xisx-positionofpeg"
self.x=x
defpush(self,d):
d.setx(self.x)
d.sety(-150+34*len(self))
self.append(d)
defpop(self):
d=list.pop(self)
d.sety(150)
returnd
defhanoi(n,from_,with_,to_):
ifn>0:
hanoi(n-1,from_,to_,with_)
to_.push(from_.pop())
hanoi(n-1,with_,from_,to_)
defplay():
onkey(None,"space")
clear()
try:
hanoi(6,t1,t2,t3)
write("pressSTOPbuttontoexit",
align="center",font=("Courier",16,"bold"))
exceptTerminator:
pass#turtledemouserpressedSTOP
defmain():
globalt1,t2,t3
ht();penup();goto(0,-225)#writerturtle
t1=Tower(-250)
t2=Tower(0)
t3=Tower(250)
#maketowerof6discs
foriinrange(4,0,-1):
t1.push(Disc(i))
#preparespartanicuserinterface;-)
write("pressspacebartostartgame",
align="center",font=("Courier",16,"bold"))
onkey(play,"space")
listen()
return"EVENTLOOP"
if__name__=="__main__":
msg=main()
print(msg)
mainloop()
‘伍’ 关于python教程中处理异常的问题
EOF为"文件结束符",在linux终端中按Ctrl-D就是向终端输入EOF,在windows的cmd中Ctrl-Z是EOF.
而且在输入后需要按回车键.'\n'代表linux的换行符,就是另起一行的符号,直接输入'\n'只是代表你输入了'\'字符和'n'字符,是两个字符.
‘陆’ python程序算一元二次方程的实验报告
https://github.com/hitwhphk/mathTool
我上数值分析时,做的一个GUI程序,解一元二次方程,多元一次方程组。具体的看源码吧
‘柒’ python多线程的问题如何处理
在python里线程出问题,可能会导致主进程崩溃。 虽然python里的线程是操作系统的真实线程。
那么怎么解决呢?通过我们用进程方式。子进程崩溃后,会完全的释放所有的内存和错误状态。所以进程更安全。 另外通过进程,python可以很好的绕过GIL,这个全局锁问题。
但是进程也是有局限的。不要建立超过CPU总核数的进程,否则效率也不高。
简单的总结一下。
当我们想实现多任务处理时,首先要想到使用multiprocessing, 但是如果觉着进程太笨重,那么就要考虑使用线程。 如果多任务处理中需要处理的太多了,可以考虑多进程,每个进程再采用多线程。如果还处理不要,就要使用轮询模式,比如使用poll event, twisted等方式。如果是GUI方式,则要通过事件机制,或者是消息机制处理,GUI使用单线程。
所以在python里线程不要盲目用, 也不要滥用。 但是线程不安全是事实。如果仅仅是做几个后台任务,则可以考虑使用守护线程做。如果需要做一些危险操作,可能会崩溃的,就用子进程去做。 如果需要高度稳定性,同时并发数又不高的服务。则强烈建议用多进程的multiprocessing模块实现。
在linux或者是unix里,进程的使用代价没有windows高。还是可以接受的。
‘捌’ python3.9运行程序出现这种问题怎么解决
目录路径的问题,通常最好的是调用os.path.join(path1,path2,path3)函数来进行处理拼接,这样会避免,因为linux和windows路径的斜杠不同,或因转义符引起的路径问题。
‘玖’ python请用异常处理改造作业1空气质量提醒问题,使其能够接收并处理用户的任何输入。
#Python3.6
x=int(input("请输入PM2.5数值:"))
ifx<35:
print("空气质量优,建议户外运动。")
elifx<75:
print("空气质量良好,建议适度户外运动。")
else:
print("空气污染,请小心!")
whileTrue:
x=input("请输入PM2.5数值:")
try:
x=int(x)
break
exceptValueError:
print("输入PM2.5的值错误,请重新输入:")
ifx<35:
print("空气质量优,建议户外运动。")
elifx<75:
print("空气质量良好,建议适度户外运动。")
else:
print("空气污染,请小心!")