python的一个微信小程序用什么编写编写

为了账号安全,请及时绑定邮箱和手机
急急急,求Python2大神,编写一个Python小程序!
题目内容:依次判断一系列给定的字符串是否为合法的 Python 标识符。输入格式:一系列字符串,每个字符串占一行。输出格式:判断每行字符串是否为合法的 Python 标示符,如果合法则输出 True,否则输出 False。输入样例:abc_def21gh输出样例:TrueTrueFalse
#!/usr/bin/env python
# -*- coding: utf-8 -*-
while True:
s = raw_input()
if s == '':
l.append(s)
for s in l:
if re.match('[A-Za-z_]', s):
if re.search('[_]|\w', s):
print 'True'
print 'False'
print 'False'
你还没有登录,请先登录或注册慕课网帐号
我能做到最好!!!
# -*- coding: utf-8 -*-import rel = []while True:
s = raw_input('Please input your char:')
if s == '':
l.append(s)for s in l:
if re.match('[A-Za-z_]', s):
if re.search('[_]|\w', s):
print 'True'
print 'False'
print 'False'#允许多次输入,输入完后不管please input your char:按两次回车就可以了
你还没有登录,请先登录或注册慕课网帐号
11489人关注
Copyright (C)
All Rights Reserved | 京ICP备 号-2查看:447|回复:1
抓取百度贴吧“”至“”这10个页面并以.html~.html这样的文件名保存到本地硬盘上(提示:文件写入使用wb模式)。
论坛运营团队的非正规军
#python3.4.1
import urllib.request
for num in range(10):
& & file = open('d:\\temp\\{}.html'.format(num), &wb&)
& & file.write(urllib.request.urlopen('/p/{}'.format(num)).read());
& & file.close()
这个世界的矛盾就在于:知道得多的人太少,还觉得知道得太少;知道的少的人太多,还要装知道得太多。写给已有编程经验的 Python 初学者的总结 - 文章 - 伯乐在线
& 写给已有编程经验的 Python 初学者的总结
当我开始学习Python的时候,有些事我希望我一早就知道。我花费了很多时间才学会这些东西。我想要把这些重点都编纂到一篇文章当中。这篇文章的目标读者,是刚刚开始学习Python语言的有经验的程序员,想要跳过前几个月研究Python使用的那些他们已经在用的类似工具。包管理和标准工具这两节对于初学者来说同样很有帮助。
我的经验主要基于Python 2.7,但是大多数的工具对任何版本都有效。
如果你从来没有使用过Python,我强烈建议你阅读,因为你需要知道基本的语法和类型。
Python世界最棒的地方之一,就是大量的第三方程序包。同样,管理这些包也非常容易。按照惯例,会在 requirements.txt 文件中列出项目所需要的包。每个包占一行,通常还包含版本号。这里有一个例子,本博客使用:
; html-script: false ]pelican==3.3
pelican-extended-sitemap==1.0.0
; html-script: false ]pelican==3.3Markdownpelican-extended-sitemap==1.0.0
Python 程序包有一个缺陷是,它们默认会进行全局安装。我们将要使用一个工具,使我们每个项目都有一个独立的环境,这个工具叫virtualenv。我们同样要安装一个更高级的包管理工具,叫做pip,他可以和virtualenv配合工作。
首先,我们需要安装pip。大多数python安装程序已经内置了easy_install(python默认的包管理工具),所以我们就使用easy_install pip来安装pip。这应该是你最后一次使用easy_install 了。如果你并没有安装easy_install ,在linux系统中,貌似从python-setuptools 包中可以获得。
如果你使用的Python版本高于等于3.3, 那么Virtualenv 已经是标准库的一部分了,所以没有必要再去安装它了。
下一步,你希望安装和。Virtualenv使你能够为每个项目创造一个独立的环境。尤其是当你的不同项目使用不同版本的包时,这一点特别有用。Virtualenv wrapper 提供了一些不错的脚本,可以让一些事情变得容易。
; html-script: false ]sudo pip install virtualenvwrapper
; html-script: false ]sudo pip install virtualenvwrapper
当virtualenvwrapper安装后,它会把virtualenv列为依赖包,所以会自动安装。
打开一个新的shell,输入mkvirtualenv test 。如果你打开另外一个shell,则你就不在这个virtualenv中了,你可以通过workon test 来启动。如果你的工作完成了,可以使用deactivate 来停用。
IPython是标准Python交互式的编程环境的一个替代品,支持自动补全,文档快速访问,以及标准交互式编程环境本应该具备的很多其他功能。
当你处在一个虚拟环境中的时候,可以很简单的使用pip install ipython 来进行安装,在命令行中使用ipython 来启动
另一个不错的功能是”笔记本”,这个功能需要额外的组件。安装完成后,你可以使用ipython notebook,而且会有一个不错的网页UI,你可以创建笔记本。这在科学计算领域很流行。
我推荐使用nose或是py.test。我大部分情况下用nose。它们基本上是类似的。我将讲解nose的一些细节。
这里有一个人为创建的可笑的使用nose进行测试的例子。在一个以test_开头的文件中的所有以test_开头的函数,都会被调用:
; html-script: false ]def test_equality():
assert True == False
; html-script: false ]def test_equality():&&&&assert True == False
不出所料,当运行nose的时候,我们的测试没有通过。
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests
======================================================================
FAIL: test_nose_example.test_equality
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/jhaddad/.virtualenvs/test/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/Users/jhaddad/.virtualenvs/test/src/test_nose_example.py", line 3, in test_equality
assert True == False
AssertionError
----------------------------------------------------------------------
12345678910111213
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&F======================================================================FAIL: test_nose_example.test_equality----------------------------------------------------------------------Traceback (most recent call last):&&File "/Users/jhaddad/.virtualenvs/test/lib/python2.7/site-packages/nose/case.py", line 197, in runTest&&&&self.test(*self.arg)&&File "/Users/jhaddad/.virtualenvs/test/src/test_nose_example.py", line 3, in test_equality&&&&assert True == FalseAssertionError&----------------------------------------------------------------------
nose.tools中同样也有一些便捷的方法可以调用
; html-script: false ]from nose.tools import assert_true
def test_equality():
assert_true(False)
; html-script: false ]from nose.tools import assert_truedef test_equality():&&&&assert_true(False)
如果你想使用更加类似JUnit的方法,也是可以的:
; html-script: false ]from nose.tools import assert_true
from unittest import TestCase
class ExampleTest(TestCase):
def setUp(self): # setUp & tearDown are both available
self.blah = False
def test_blah(self):
self.assertTrue(self.blah)
12345678910
; html-script: false ]from nose.tools import assert_truefrom unittest import TestCase&class ExampleTest(TestCase):&&&&&def setUp(self): # setUp & tearDown are both available&&&&&&&&self.blah = False&&&&&def test_blah(self):&&&&&&&&self.assertTrue(self.blah)
开始测试:
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests
======================================================================
FAIL: test_blah (test_nose_example.ExampleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/jhaddad/.virtualenvs/test/src/test_nose_example.py", line 11, in test_blah
self.assertTrue(self.blah)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 1 test in 0.003s
FAILED (failures=1)
1234567891011121314
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&F======================================================================FAIL: test_blah (test_nose_example.ExampleTest)----------------------------------------------------------------------Traceback (most recent call last):&&File "/Users/jhaddad/.virtualenvs/test/src/test_nose_example.py", line 11, in test_blah&&&&self.assertTrue(self.blah)AssertionError: False is not true&----------------------------------------------------------------------Ran 1 test in 0.003s&FAILED (failures=1)
卓越的库包含在Python 3 中,但是如果你在使用Python 2,可以使用pypi来获取。这个测试将进行一个远程调用,但是这次调用将耗时10s。这个例子显然是人为捏造的。我们使用mock来返回样本数据而不是真正的进行调用。
; html-script: false ]import mock
from mock import patch
from time import sleep
class Sweetness(object):
def slow_remote_call(self):
return "some_data" # lets pretend we get this back from our remote api call
def test_long_call():
s = Sweetness()
result = s.slow_remote_call()
assert result == "some_data"
1234567891011121314
; html-script: false ]import mock&from mock import patchfrom time import sleep&class Sweetness(object):&&&&def slow_remote_call(self):&&&&&&&&sleep(10)&&&&&&&&return "some_data" # lets pretend we get this back from our remote api call&def test_long_call():&&&&s = Sweetness()&&&&result = s.slow_remote_call()&&&&assert result == "some_data"
当然,我们的测试需要很长的时间。
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests test_mock.py
Ran 1 test in 10.001s
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests test_mock.py&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &Ran 1 test in 10.001s&OK
太慢了!因此我们会问自己,我们在测试什么?我们需要测试远程调用是否有用,还是我们要测试当我们获得数据后要做什么?大多数情况下是后者。让我们摆脱这个愚蠢的远程调用吧:
; html-script: false ]import mock
from mock import patch
from time import sleep
class Sweetness(object):
def slow_remote_call(self):
return "some_data" # lets pretend we get this back from our remote api call
def test_long_call():
s = Sweetness()
with patch.object(s, "slow_remote_call", return_value="some_data"):
result = s.slow_remote_call()
assert result == "some_data"
123456789101112131415
; html-script: false ]import mock&from mock import patchfrom time import sleep&class Sweetness(object):&&&&def slow_remote_call(self):&&&&&&&&sleep(10)&&&&&&&&return "some_data" # lets pretend we get this back from our remote api call&def test_long_call():&&&&s = Sweetness()&&&&with patch.object(s, "slow_remote_call", return_value="some_data"):&&&&&&&&result = s.slow_remote_call()&&&&assert result == "some_data"
好吧,让我们再试一次:
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests test_mock.py
----------------------------------------------------------------------
Ran 1 test in 0.001s
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ nosetests test_mock.py&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& .----------------------------------------------------------------------Ran 1 test in 0.001s&OK
好多了。记住,这个例子进行了荒唐的简化。就我个人来讲,我仅仅会忽略从远程系统的调用,而不是我的数据库调用。
nose-progressive是一个很好的模块,它可以改善nose的输出,让错误在发生时就显示出来,而不是留到最后。如果你的测试需要花费一定的时间,那么这是件好事。
pip install nose-progressive 并且在你的nosetests中添加--with-progressive
iPDB是一个极好的工具,我已经用它查出了很多匪夷所思的bug。pip install ipdb 安装该工具,然后在你的代码中 ipdb.set_trace(),然后你会在你的程序运行时,获得一个很好的交互式提示。它每次执行程序的一行并且检查变量。
python内置了一个很好的,帮助我搞清楚发生了什么。这里有一个没什么用的python程序:
; html-script: false ]a = 1
; html-script: false ]a = 1b = 2a = b
这里是对这个程序的追踪结果:
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ python -m trace --trace tracing.py
--- modulename: tracing, funcname: &module&
tracing.py(1): a = 1
tracing.py(2): b = 2
tracing.py(3): a = b
--- modulename: trace, funcname: _unsettrace
trace.py(80):
sys.settrace(None)
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ python -m trace --trace tracing.py&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1 ?&& --- modulename: tracing, funcname: &module&tracing.py(1): a = 1tracing.py(2): b = 2tracing.py(3): a = b --- modulename: trace, funcname: _unsettracetrace.py(80):&&&&&&&& sys.settrace(None)
当你想要搞清楚其他程序的内部构造的时候,这个功能非常有用。如果你以前用过strace,它们的工作方式很相像
在一些场合,我使用来追踪性能问题。它可以创建函数调用时间和次数的图表。
最后,objgraph对于查找内存泄露非常有用。这里有一篇。
Gevent 是一个很好的库,封装了Greenlets,使得Python具备了异步调用的功能。是的,非常棒。我最爱的功能是Pool,它抽象了异步调用部分,给我们提供了可以简单使用的途径,一个异步的map()函数:
; html-script: false ]from gevent import monkey
monkey.patch_all()
from time import sleep, time
def fetch_url(url):
print "Fetching %s" % url
print "Done fetching %s" % url
from gevent.pool import Pool
urls = ["", "", ""]
p = Pool(10)
start = time()
p.map(fetch_url, urls)
print time() - start
12345678910111213141516171819
; html-script: false ]from gevent import monkeymonkey.patch_all()&from time import sleep, time&def fetch_url(url):&&&&print "Fetching %s" % url&&&&sleep(10)&&&&print "Done fetching %s" % url&from gevent.pool import Pool&urls = ["", "", ""]&p = Pool(10)&start = time()p.map(fetch_url, urls)print time() - start
非常重要的是,需要注意这段代码顶部对gevent monkey进行的补丁,如果没有它的话,就不能正确的运行。如果我们让Python连续调用 fetch_url 3次,通常我们期望这个过程花费30秒时间。使用gevent:
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ python g.py
Done fetching
Done fetching
Done fetching
; html-script: false ](test)jhaddad@jons-mac-pro ~VIRTUAL_ENV/src$ python g.py&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Fetching http://test.comFetching http://bacon.comFetching http://eggs.comDone fetching http://test.comDone fetching http://bacon.comDone fetching http://eggs.com10.
如果你有很多数据库调用或是从远程URLs获取,这是非常有用的。我并不是很喜欢回调函数,所以这一抽象对我来说效果很好。
好吧,如果你看到这里了,那么你很可能已经学到了一些新东西。这些工具,在过去的一年里对我影响重大。找打它们花费了不少时间,所以希望本文能够减少其他人想要很好利用这门语言需要付出的努力。
打赏支持我翻译更多好文章,谢谢!
打赏支持我翻译更多好文章,谢谢!
任选一种支付方式
关于作者:
可能感兴趣的话题
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线最后一个广告位招租
PythonTip是一个公益项目,网站托管于付费服务器。由于目前访问人数飙升,每日流量等资源消耗较多,现出售广告位以支付每月机器费用,有意者请加qq联系站长。~
分享一个写小demo用的python模板
有时想写一个小程序,接收几个命令行参数,输出一些信息。如果是‘hello,world’这种复杂度,sys模块和print函数就搞定了,但现实常常复杂那么一点点,查argparse和logging的文档是个体力活,容易被文档淹没,通常又不需要太复杂的功能,所以就抽空写了一个简单模板。
1.完整源码。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Python Demo Template.
- log file &app.log& will be created in CWD
- itertools and operator may simplify sort and iterate
- sqlite3 may be helpful for your housekeeping file format
import argparse
import logging
import logging.config
def main():
# all of command line arguments should be added here
parser = argparse.ArgumentParser(description='Python Demo Template')
parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
default='-', help='text source [default: sys.stdin]')
parser.add_argument("-v", "--verbose", action="count", default=0,
help="increase output verbosity")
args = parser.parse_args()
# runtime services: logging
env_init(args.verbose)
# main logic begins
for line in args.infile:
logging.info(line.rstrip())
def env_init(verbose):
# logging facility, only loglevel can be changed
if verbose &= 2:
loglevel = logging.DEBUG
elif verbose &= 1:
loglevel = logging.INFO
loglevel = logging.WARNING
LOGGING = {
'version': 1,
'formatters': {
'simple': {
'format': '%(levelname)s %(message)s'
'verbose': {
'format': ('%(levelname)s %(asctime)s %(module)s '
'%(process)d %(thread)d %(message)s')
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'verbose',
'filename': 'app.log',
'maxBytes': 10*1024*1024,
'backupCount': 5
'level': loglevel,
'handlers': ['console', 'file']
logging.config.dictConfig(LOGGING)
if __name__ == '__main__':
2. 如果用Vim编辑代码,可以加一个autocmd,假设上述代码保存为py_main。
"Python main template
autocmd! BufNewFile *main.py 0r ~/.vim/templates/py_main
3. 用Vim新建以main.py为后缀的文件时,就会自动载入这个模板。
原文链接:http://blog.chinaunix.net/uid-190176-id-4128253.html
阅读: 829 |python编写爬虫小程序
投稿:hebedich
字体:[ ] 类型:转载 时间:
我们可以通过python 来实现这样一个简单的爬虫功能,把我们想要的代码爬取到本地。下面就看看如何使用python来实现这样一个功能。
深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊、“多线程”啊都没有学到。
想到廖雪峰大神的python教程很经典、很著名。就想找找有木有pdf版的下载,结果居然没找到!!CSDN有个不完整的还骗走了我一个积分!!尼玛!!
怒了,准备写个程序直接去爬廖雪峰的教程,然后再html转成电子书。
过程很有趣呢,用浅薄的python知识,写python程序,去爬python教程,来学习python。想想有点小激动……
果然python很是方便,50行左右就OK了。直接贴代码:
# coding:utf-8
import urllib
domain = ''
#廖雪峰的域名
path = r'C:\Users\cyhhao2013\Desktop\temp\\'
#html要保存的路径
# 一个html的头文件
input = open(r'C:\Users\cyhhao2013\Desktop\0.html', 'r')
head = input.read()
# 打开python教程主界面
f = urllib.urlopen("/wiki/095c955c1e6d8bbfac")
home = f.read()
# 替换所有空格回车(这样容易好获取url)
geturl = home.replace("\n", "")
geturl = geturl.replace(" ", "")
# 得到包含url的字符串
list = geturl.split(r'"&&ahref="')[1:]
# 强迫症犯了,一定要把第一个页面也加进去才完美
list.insert(0, '/wiki/095c955c1e6d8bbfac"&')
# 开始遍历url List
for li in list:
url = li.split(r'"&')[0]
url = domain + url
f = urllib.urlopen(url)
html = f.read()
# 获得title为了写文件名
title = html.split("&title&")[1]
title = title.split(" - 廖雪峰的官方网站&/title&")[0]
# 要转一下码,不然加到路径里就悲剧了
title = title.decode('utf-8').replace("/", " ")
# 截取正文
html = html.split(r'&!-- block main --&')[1]
html = html.split(r'&h4&您的支持是作者写作最大的动力!&/h4&')[0]
html = html.replace(r'src="', 'src="' + domain)
# 加上头和尾组成完整的html
html = head + html+"&/body&&/html&"
# 输出文件
output = open(path + "%d" % list.index(li) + title + '.html', 'w')
output.write(html)
output.close()
简直,人生苦短我用python啊!
以上所述就是本文的全部内容了,希望大家能够喜欢。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 编写小程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信