分類目錄歸檔:Python

Python一行代碼實現九九乘法表

最近一個弟弟求作業,要求 一行代碼實現九九乘法表,我給出的代碼如下:

print("".join(['%sx%s=%s%s' % (j, i, i*j, "\n" if i==j else "\t") for i in range(1,10) for j in range(1,i+1)]))

今天收到回復,作業過了,全班就一個這樣實現的。

哈哈,我果然是野生的,和標準答案不一樣。

print('\n'.join(['\t'.join(["%s*%s=%s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))

百度了一下,看了幾十個搜索結果,都是標準答案的方法。。。。

(┬_┬)

———————————-

2019-6-25 更新,增加 lambda版本

print('\n'.join([i for i in map(lambda i:'\t'.join(['%s*%s=%s' % (j, i, i*j) for j in range(1, i+1)]), range(1, 10))]))

IIS支持Python的方法

??? IIS支持Python,這是一個多么令人心動的嘗試啊。今天我就實現了IIS支持Python。
???環境IIS6 + Python2.5,其他版本都差不多。
?? 新建Web服務擴展,py,要求的文件填寫C:\Python25\python.exe %s %s。網站>屬性>主目錄配置>映射>添加。擴展名:.py,可執行文件填寫C:\Python25\python.exe %s %s。確定,怎么出錯?改成”C:\Python25\python.exe”??%s %s,哈哈??梢粤?,測試一下。

print ('Status: 200 OK')
print ('Content-Type: text/html')
print ('')
print ('<h1>Hello, Python</h1>')

瀏覽器訪問一下,正常,哈哈哈。。。成功了。

Python 之 XML與文本操作

一直想做一個自動讀取RSS,自動更新的站。今晚正好沒有事,先寫個Demo。
臨時先保存到文本文件中。順便復習一下Python。
用到了MD5,XML.DOM,URllib,OS庫,都是默認的。
直接插代碼吧。

import sys
#coding=gb2312
reload(sys)
sys.setdefaultencoding('utf-8')
import md5
import os
import urllib
import xml.dom.minidom as xxs

#Config
tmpPath='E:/Else/rss-engins/'

#FileName2Md5
def md5str(t):
	h=md5.new()
	h.update(t)
	return str(h.hexdigest())
	
#FileSystem
def saveFile(t,c):
	f='data/'+md5str(t)+'.txt'
	if os.path.isfile(f):
		return
	fi=open(tmpPath+'index.txt','a')
	fi.writelines(t+'\n')
	fg=open(tmpPath+f,'w')
	fg.writelines(c)
	
#RSS
def saveRss(f,c,encoding):
	fp=open(f,'w')
	if encoding=='gb2312':
		c=c.decode('gb2312').encode('utf-8')
		c=c.replace('encoding="gb2312"','encoding="utf-8"')
	fp.writelines(c)
	fp.close()
	return f
def getRss(url):
	ul=urllib.urlopen(url)
	t=ul.read()
	ul.close()
	return t
def rssMain(url,encoding):
	f=tmpPath+'xml/'+md5str(url)+'.xml'
	if os.path.isfile(f):
		return "isok"
	return saveRss(f,getRss(url),encoding)

#getInfo
def getRssInfo(url,encoding):
	t=rssMain(url,encoding)
	if t=='isok':
		print '該路徑已經采集過了。'
		return
	t=xxs.parse(t)
	ri=t.getElementsByTagName("channel")[0].getElementsByTagName("item")
	for item in ri:
		title=str(item.getElementsByTagName("title")[0].childNodes[0].data)
		content=str(item.getElementsByTagName("description")[0].childNodes[0].data)
		print '保存文章('+title+')中...'
		saveFile(title,content)

#處理
def BaiduHi(RS):
	for rs in RS:
		print '加載用戶:'+rs+'(http://hi.baidu.com/'+rs+'/rss)...'
		getRssInfo(r'http://hi.baidu.com/'+rs+'/rss','gb2312')
		print '用戶:'+rs+'處理完畢。\n'
		
def SohuBlog(RS):
	for rs in RS:
		print '加載用戶:'+rs+'(http://'+rs+'.blog.sohu.com/rss)...'
		getRssInfo(r'http://'+rs+'.blog.sohu.com/rss','utf-8')
		print '用戶:'+rs+'處理完畢。\n'
		
#RSS服務器列表
RssServer=['mqycn','yilin','loveinmyhome','guojing021','900ip','037123']
BaiduHi(RssServer)

RssServer=['appler969','saber-bing','02040229','seahai','satanqueen','douzwang']
SohuBlog(RssServer)

現在就可以采集以上一個百度hi用戶的最新博文了。呵呵,核心還是RSS。

===============================================================
使用說明:讀取RSS,并生成記錄到本地。
索引文件為index.txt。每條新聞記錄為一行。對應的內容文件為data/{md5(文章名)}.txt

===============================================================
更新日期:2009-12-13
添加了是否讀取的判斷,如果讀取,則不再采集

===============================================================
更新日期:2009-12-24
修改了部分編碼。解決了UTF-8出粗的問題。
添加了搜狐博客的測試代碼。

準備從asp\php向Python向python進軍。

思考了很久。準備把Python作為主要語言。

ASP\PHP:僅能用于WEB方便,如果做為其他方面,比如客戶端開發,不現實。ASP模板引擎基本沒有,而且不能根據條件引用不同的腳本,效率太低。PHP則函數庫太亂,應用方便不是很多。

Python:包括嵌入式,PC程序,WEB都可以做,有成熟的模板引擎。有社區的支持,Google,豆瓣都能找到Python的身影。

還有一個原因是各個平臺都支持了Python。Linux,Unix,Mac系統默認安裝Python,塞班手機S60,Winows PPC,Windows PC都可以通過安裝軟件支持,基本上所有平臺都能運行Python,有點像Java哦。

當然。這只是一方面,最近兩三年的目標是垃圾站,所以,采集也是一個很重要的功能,用火車頭之類的畢竟不是很方便,如果用python,效率很高。方便定制。當然現在技術還是很菜,我絕對一個星期必須寫出兩個Python小程序。用于練手,就像以前學習其他語言一樣,孰能生巧。

今天看了一下urllib函數庫,和正則表達式方面的,要聯系采集,這兩個還是很重要的。

import urllib2
import re

def Key(key):
	f=urllib2.urlopen('http://www.baidu.com/s?wd='+key);
	t=f.read();
	p=re.findall(r'<td class=f><a[^>]+href="([^"]+)"',t);
	for u in p:
		getTitle(u);
	return;
		
def getTitle(u):
	k=urllib2.urlopen(u);
	x=k.read();
	n=re.search(r'([^< ]*)',x);
	if n:
		print '\n\n\nUrl:'+u;
		print 'Title:'+n.group(1);
	return;
	
Key("無線上網卡");