免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 42831 | 回复: 59
打印 上一主题 下一主题

ChinaUnix技术实践之五——Python编程大赛 欢迎大家参与!!(获奖名单公布) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-28 15:08 |只看该作者 |倒序浏览
一等奖:获得SanDisk 16GB U盘一个的用户:
yifangyou
renxiao2003
lkk2003rty


二等奖:获得ChinaUnix商务衬衫的用户:
jecoso
hq8318
hq_333
106033177
445799942


三等奖:获得ChinaUnix 限量版牙签筒一个或者小老鼠USB接线器一只的用户:
poper168
xinyv
car292516198
chenyx
BangBull
yangzeDB
surpass_li
linglan520
zhujinzz
amarant

请以上获奖者在2011年9月11日之前将姓名、电话、地址、邮编以站内短信发送给(风铃之音)以便给您及时快递奖品。

python版块是ChinaUnix社区内讨论日趋热烈的技术版块之一。Python也是当下越来越火的语言之一,之前我们已经成功举办了PHP、C/C+ Perl和shell的编程大赛,今天我们举办第五期---python编程大赛,发挥您的技术之长,赢取我们为优胜者准备的丰富奖品,欢迎大家踊跃参加!

第一期:PHP编程大赛 http://bbs.chinaunix.net/thread-1788191-1-1.html
第二期:C/C++编程大赛http://bbs.chinaunix.net/thread-1820953-1-1.html
第三期:Perl编程大赛http://bbs.chinaunix.net/thread-1860259-1-1.html
第四期:Shell编程大赛http://bbs.chinaunix.net/thread-2319120-1-1.html

参赛要求:参与活动必须是chinaunix社区的注册会员

点击注册: http://sso.chinaunix.net/Register

大赛日程:

参赛时间:
2011.06.28~2011.07.20

评选时间:2011.07.21~2011.07.31

结果公布:2011.07.31

奖项设置:
一等奖:3名,最先正确完成8道题的三名用户,赠送SanDisk 16GB U盘一个。
二等奖:5名,获奖者为最先正确完成6道试题的五名用户,赠送特别定制版ChinaUnix商务衬衫。
三等奖:10名,获奖者为最先正确完成5道试题的十名用户,赠送ChinaUnix 限量版牙签筒一个或者小老鼠USB接线器一只。

一等奖:

二等奖:

三等奖:      
参赛细则:
(1)代码规范:使用标准python语言,采用编程标准可以使项目更加顺利地完成。
(2)性能:应用程序可以运行与高效运行是两个层次,保证程序的最佳效率。
(3)简洁:写代码是一种艺术。除了正确的缩进、大小写、命名规则之外,请时刻牢记爱因斯坦的名言--简单就是美。
(4)每位会员可以发表多个代码,以最高评价为准,不可重复获奖;
(5)提交代码请跟帖发表,并附相关系统环境及编译环境说明。
评选获奖的依据:答题的时间及答题的质量为依据,邀请嘉宾作为评选人。

代码提交:
参赛者以跟帖的方式提交代码,相似代码以最先提交为准,谁最早提交谁优秀。
注:严禁抄袭,一经发现,取消评选资格;


大赛评委团:
smallfish_xy

其他评委正在强力邀请中,欢迎自荐!

大赛联系人:
无风之谷 站内联系或者qq:19721714

试题:
1. 去除list中的重复数据  [11, 22, 33, 11, 22] => [11, 22, 33]  

2. 格式化输出,三位一逗号  1234567 -> 1,234,567  

3. 字符反转  abcde -> edcba  

4. 打印当前系统的挂载点和空间大小(Linux)  

5. 模拟登录401验证网站(Basic HTTP Authentication)  

6. 获取远程某机器的系统当前日期时间(Linux)  

7. 打印Apache日志中访问次数最多的10条URL。  

8. 并发抓取10个URL,打印出HTTP状态码。

公布试题答案:
print '1.'
a = [11, 22, 33, 11, 22]
b = list(set(a))
b.sort()
print '%s => %s' % (a, b)
print

print '2.'
import re
a = '1234567'
b = re.sub(r"(?<=\d)(?=(\d{3})+\b)",",",a)
print '%s => %s' % (a, b)
print

print '3.'
a = 'abcde'
b = a[::-1]
print '%s => %s' % (a, b)
print

print '4.'
import commands
a = commands.getoutput('df -h')
for b in a.split('\n')[1:]:
    c = b.split()
    print '%-10s => %s' % (c[-1], c[1])
print

print '5.'
import urllib2
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, "http://xxxxx", "smallfish", "***" )
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
try:
    f = opener.open("http://xxxxx/dddd" )
    f.close()
    print 'login ok'
except urllib2.HTTPError:
    print 'login error'
print

print '6.'
import commands
a = commands.getoutput("ssh smallfish@haaku.net 'date'"  )
print 'now:', a
print

print '7.'
f = open("/var/log/apache2/access.log" )
a = {}
for line in f:
    url = re.findall(r'".*?"', line)[0].split()[1]
    a[url] = a.get(url, 0) + 1
b = sorted(a.items(), key=lambda x: x[1], reverse=True)
b = b[:10]
print b
print

print '8.'
urls = ['http://www.qq.com']
urls.append('http://www.163.com')
urls.append('http://www.sina.com.cn')
urls.append('http://www.sohu.com')
import gevent
from gevent import monkey
monkey.patch_socket()
import urllib2
import time
def get_http_status(url):
    f = urllib2.urlopen(url)
    c = f.getcode()
    return url, c
jobs = [gevent.spawn(get_http_status, url) for url in urls]
gevent.joinall(jobs, timeout=3)
for job in jobs:
    print job.value

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2011-06-28 15:17 |只看该作者
好活动,支持下.

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
3 [报告]
发表于 2011-06-28 15:19 |只看该作者
本帖最后由 amarant 于 2011-06-28 16:44 编辑

1.
  1. li=[11,22,11,33,44,33]
  2. li=set(li)
复制代码
2.不知道簡單的方法,初學者 呵呵
  1. #!/usr/bin/env python

  2. dat=12345678912312345
  3. fmt=str(dat)
  4. if len(fmt)%3==0:
  5.         i=len(fmt)/3-1
  6. else:
  7.         i=len(fmt)/3

  8. for temp in range(i):
  9.         j=-temp-1
  10.         fmt=fmt[:j*3-temp]+','+fmt[3*j-temp:]

  11. print fmt
复制代码
3.
  1. #!/usr/bin/env python

  2. s='abcde'
  3. res=[]

  4. i,j=len(s)-1,0

  5. while i>=0:
  6.         res[j:]=s[i]
  7.         i,j=i-1,j+1

  8. res=''.join(res)
  9. print res
复制代码
4.

  1. #!/usr/bin/env python

  2. import os
  3. os.system('df -h')
复制代码

论坛徽章:
0
4 [报告]
发表于 2011-06-28 15:20 |只看该作者
好活动,支持!
好活动,支持!
好活动,支持!

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
5 [报告]
发表于 2011-06-28 15:23 |只看该作者
回复 1# 无风之谷
这个活动不错。什么时候不限制语言多好啊

论坛徽章:
0
6 [报告]
发表于 2011-06-28 17:03 |只看该作者
回复  无风之谷
这个活动不错。什么时候不限制语言多好啊
瀚海书香 发表于 2011-06-28 15:23



    哈,社区会在程序版块开展多个编程大赛的。  总有适合你的。。。

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
7 [报告]
发表于 2011-06-28 17:09 |只看该作者
本帖最后由 chenyx 于 2011-06-28 20:43 编辑

1.
  1. li=[11,22,11,33,44,33]
  2. li=list(set(li))
复制代码
2.python取字符串的子串真方便啊
  1. #!/usr/bin/env python

  2. dat=1234567
  3. fmt=str(dat)
  4. j=len(fmt)%3
  5. i=(len(fmt)-j)/3-1
  6. result=''
  7. if j>0:
  8.         result=fmt[:j]+","
  9.         fmt=fmt[j:]

  10. for temp in range(i):
  11.         result=result+fmt[:3]+","
  12.         fmt=fmt[3:]

  13. print result+fmt
复制代码
3.
  1. words="abcde"
  2. new=words[::-1]
复制代码
4.
  1. import os
  2. os.system('df -h')
复制代码
6.前提是当前主机和hostb之间ssh不需要密码
  1. #!/usr/bin/env python
  2. import os
  3. os.system("ssh hostb date")
复制代码

论坛徽章:
0
8 [报告]
发表于 2011-06-28 17:27 |只看该作者
回复 1# 无风之谷


    活动很好
   不懂python 关注下

论坛徽章:
0
9 [报告]
发表于 2011-06-28 22:14 |只看该作者
本帖最后由 linglan520 于 2011-06-29 16:39 编辑

1.
  1. list_pre = [11, 22, 33, 11, 22]
  2. list_after = sorted(list(set(list1)))
复制代码
2.
  1. def add_douhao(str):
  2.      temp_str = str[::-1]
  3.      temp_list = []
  4.      for i in range(0,len(temp_str),3):
  5.          temp_list.append(temp_str[i:i+3])
  6.          
  7.      return ",".join(temp_list)[::-1]
  8.      
  9. print add_douhao("90878977676")
复制代码
3.
  1. str_pre = "abcde"
  2. str_after = str_pre[::-1]
复制代码
4.
  1. import os
  2. os.system('df -h')
复制代码
5.
  1. import urllib2
  2. import base64

  3. url = "http://api.createsend.com/api/v3/subscribers/05d3699548e0678136403ba2428c25b4.json?email=libaoyin@cn-acg.com"
  4. encodedstr = base64.encodestring("53b0212febdad7ba9979710c19e843aa:magic")[:-1]
  5. auth = "Basic %s" % encodedstr
  6. req = urllib2.Request(url, None, {"Authorization": auth})
  7. handle = urllib2.urlopen(req)
  8. handle.read()
  9. '{"EmailAddress":"libaoyin@cn-acg.com","Name":"","Date":"2011-06-28 09:53:00","State":"Active","CustomFields":[]}'
复制代码

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
10 [报告]
发表于 2011-06-29 08:26 |只看该作者
本帖最后由 chenyx 于 2011-06-29 09:15 编辑

5.需要在apache的配置中指定认证的py文件
  1. from mod_python import apache
  2. def authenhandler(req):
  3.     pw = req.get_basic_auth_pw()
  4.     user = req.user
  5.     if user == "spam" and pw == "eggs":
  6.         return apache.OK
  7.     else:
  8.         return apache.HTTP_UNAUTHORIZED

复制代码
7.这个用awk实现比较快速
  1. import os
  2. os.system(" awk '{print $11}' /var/log/httpd/access_log |sed 's/^.*cn\(.*\)\"/\1/g'|sort |uniq -c|sort -rn|head")
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP