Chinaunix

标题: 用python重写了C语言经典100例,与大家分享 [打印本页]

作者: jcodeer    时间: 2007-09-22 23:49
标题: 用python重写了C语言经典100例,与大家分享
初学python先练练手,请大家多多指教

http://jcodeer.cublog.cn/

python太容易上瘾了,没办法

jcodeer.cublog.cn_python100.rar

34.35 KB, 下载次数: 7000

C语言经典100例(python版本)


作者: greenbox    时间: 2007-09-23 08:38
好呀,顶!
作者: ysixin    时间: 2007-09-23 11:28
好样的
练手的好东西
作者: missjiang    时间: 2007-09-25 19:53
原帖由 jcodeer 于 2007-9-22 23:49 发表
初学python先练练手,请大家多多指教

http://jcodeer.cublog.cn/

python太容易上瘾了,没办法

能静下心来把100个例子都自己亲手做一遍,有这样的学习态度还怕有什么学不会吗?向楼主学习了。
作者: yecheng_110    时间: 2007-09-26 22:59
LZ好人
作者: 2gua    时间: 2007-09-27 06:54

作者: javier_zh    时间: 2007-09-28 10:51
好象少了4个经典例:wink:
作者: 大狗狗    时间: 2007-09-28 18:20
谢谢楼主。已经下载,

文件为gb2312编码, 可以使用  iconv -f GB2312 -t UTF-8 JCP004.py  传为UTF-8

不过有个问题 运行的时候显示
sys:1: DeprecationWarning: Non-ASCII character '\xe3' in file JCP001.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
是不是转码的问题。。
作者: 大狗狗    时间: 2007-09-28 18:21
LANG=zh_CN.UTF-8
LC_CTYPE=zh_CN.UTF-8
作者: jcodeer    时间: 2007-09-28 19:42
正如javier_zh 所说,C语言的几个函数不知道如何用Python写,只好空着了,功力不够呀:(
希望爱好这能将其完善;还有就是有些代码直接按照C的思想来写,python的特性没有用上,在修炼修炼,希望能将100例变为Python经典100例
作者: jcodeer    时间: 2007-09-28 19:53
关于文件编码问题,我当时使用的IDLE,每次保存时会提示使用的了非ascii,如果使用python.exe执行的话,在文件的第一行添加如下:

# -*- coding: cp936 -*-

就OK啦
作者: felixsky    时间: 2007-09-29 19:15
ding
作者: death123    时间: 2007-09-30 05:23
lz好厉害!!佩服中~~~尤其是这种态度啊~~~
作者: brs_8791    时间: 2007-10-01 15:20
楼主,感谢了!
作者: blackjimmy    时间: 2007-10-03 00:53
十分感谢楼主,有了这个就有个例子咯!
作者: DesignInside    时间: 2007-10-07 16:50
向你学习 !!
也准备向你看齐
作者: askQLiang    时间: 2007-10-11 22:46
你写的第四个例子在输入2007。13.11时输出data error还输出
it is the 307th day.我是新手,不知道怎样改。请指点。
作者: jcodeer    时间: 2007-10-11 23:31
当时的想法是:
如果输入的数据非法,如month > 11,mothn < 0情况时,直接退出,后面的程序不再执行。
由于不知道什么语句可以代替exit,所以偷懒了

现在补上:

'''题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
      情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
'''
year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))

months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 <= month <= 12:
    sum = months[month - 1]
else:
    print 'data error'
# 对年月做了判断,日只是加了上下限,没有根据月判断输入的是否合法
if year < 0 or month < 0 or month > 11 or day < 0 or day >31:
    import os
    os._exit(1)
   
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    leap = 1
if (leap == 1) and (month > 2):
    sum += 1
print 'it is the %dth day.' % sum


在else语句中添加
import os
os._exit(1)

谢谢指正,我在blog上更新一下。

[ 本帖最后由 jcodeer 于 2007-10-11 23:42 编辑 ]
作者: lvjfeng    时间: 2009-04-07 09:35
期待经典100例,不过lz已经很强了,我都没写。谢谢
作者: love_gzh    时间: 2009-04-07 13:56
值得学习,支持
作者: xiaomayi0323    时间: 2009-04-07 15:19
感谢楼主,向楼主学习
作者: zzg123    时间: 2009-04-07 16:43
sssssssssssssssssssss
作者: maincoolbo    时间: 2009-04-08 11:05
标题: 支持一下
想楼主学习这种学习精神,,
作者: fengzi0101    时间: 2009-07-16 12:28
学习了~~呵呵~~
作者: thsniperwolf    时间: 2009-07-16 14:23
标题: 回复 #1 jcodeer 的帖子
学习了
作者: yiteng    时间: 2009-07-26 09:53
努力写
作者: zuozhu    时间: 2009-07-26 11:09
刚学python,正好学习,谢谢LZ,辛苦
作者: oo.3c    时间: 2009-07-29 00:22
好东西啊,谢谢楼主了~
作者: zhangft    时间: 2009-07-31 09:28
看来楼主是刚学不久吧
继续努力
呵呵
作者: toawinner47    时间: 2009-09-01 23:37
有二问题:
1.如何在SHELL下批量iconv -f GB2312 -t UTF-8并重定向到各个新文件里?
2.如何在SHELL下批量把这"# -*- coding: utf-8 -*-"重定向到各个新文件里第一行?
作者: 南无小和尚    时间: 2009-09-01 23:54
刚学python就看到这个,看来我运气好啊
作者: gnujava    时间: 2009-09-02 17:17
附件中是已经转成UTF-8格式的100个py文件。

使用的是conv.sh.tar.gz文件转的。也可以只下这个文件,把它拷贝到原作者100个py文件的目录中,运行一下就全转成UTF-8格式了。

ps:作者的所有文件都是GB2312格式的,但JCP077.py例外,这个文件中两种编码格式 都有,而且在文件头上加了BOM,

所以这个文件只能手动转了,万恶的windows啊。

[ 本帖最后由 gnujava 于 2009-9-2 17:18 编辑 ]

python100.tar.gz

15 KB, 下载次数: 160

python经典100例(UTF-8格式)

conv.sh.tar.gz

286 Bytes, 下载次数: 73

转换文件格式脚本


作者: jack.gao    时间: 2009-09-02 17:22
正准备要学,看到这个东西真的很高兴
作者: firmlyjin    时间: 2009-09-02 20:18
佩服
作者: shihyu    时间: 2009-09-04 09:08
想在這100例中 都加入 # -*- coding: utf-8 -*-  

這樣代碼怎麼寫?
作者: listenan    时间: 2009-10-21 09:23
太好了。谢谢啊。
作者: java8910    时间: 2009-10-21 11:07
好东西呀。先谢谢了
作者: allengaller    时间: 2010-12-16 01:07
好样的!
作者: flying_away    时间: 2010-12-16 10:42

作者: cores_cu    时间: 2010-12-16 14:31
练手的好东西
作者: koko112    时间: 2010-12-22 15:27
多谢楼主分享,谢谢了:wink:
作者: kingbeckham2008    时间: 2011-01-16 13:03
先顶了  
作者: kingbeckham2008    时间: 2011-01-16 13:18
回复 32# gnujava


   
   不好意思,问下为什么下载了之后无法解压呀?
   如果有空的话能发我邮箱(along.jin@gmail.com)吗?
作者: shadowcathy    时间: 2011-01-16 16:29
顶一下,谢谢楼主。
作者: hahazgd    时间: 2011-01-18 11:05
好东东  谢谢啊
作者: mikzh    时间: 2011-01-26 10:11
Thatsgood。‘好东西
作者: junjielinux    时间: 2011-02-01 15:21
值得学习!!!
作者: hiji    时间: 2011-02-07 21:14
謝謝lz了,先收了,慢慢研究
作者: asjcoo    时间: 2011-02-21 12:20
学习的好东西 谢谢分享
作者: zheyehuiyou    时间: 2011-06-30 16:04
谢谢了~~~
作者: rubyish    时间: 2011-08-11 06:46
振臂一呼好东西
作者: aixcradent    时间: 2011-08-12 10:44
还不错,整理得比较辛苦哈。。。。
作者: GeBron    时间: 2011-08-14 11:04
楼主不错哦
作者: qingduo04    时间: 2011-08-16 08:53
好资料,对学习很有帮助!!!
作者: 李大双    时间: 2011-08-18 13:17
支持楼主,向楼主学习
作者: tempo8    时间: 2011-08-20 06:51
python太容易上瘾?
偶的自控力很差哦!
谢谢楼主分享
作者: guishusheng    时间: 2012-03-10 14:14
新手,到处找资料,多谢楼主GX,之前在其他地方找了个,都是自己写的,貌似很多都不正确,希望这个能给我带来帮助
作者: lzgcucool    时间: 2012-03-11 07:42
谢谢楼主,下载了。
作者: clientor    时间: 2012-03-15 16:00
我也试试看
作者: palibox    时间: 2012-03-23 17:15
回复 1# jcodeer 顶楼主


   
作者: gnfy    时间: 2012-03-27 09:19
回复 1# jcodeer
谢谢分享!


   
作者: hayfir    时间: 2012-03-27 15:17
谢谢分享,
作者: canghai12345    时间: 2012-03-27 15:25
谢谢,不错
作者: 岁月无真    时间: 2012-03-27 19:50
太强了吧。
作者: coffeeman1132    时间: 2012-03-30 20:32
敬佩,玩python一年多了,总想静下心来干点事,无奈工作在身,只能见缝插插针。哎,蜗牛走路。
现在,能如此静心的人,少,羡慕!
作者: feng86-    时间: 2012-04-11 19:39
我试了下,在每个文件头加入‘# -*- coding: utf-8 -*-’即可,因为文件太多了,就写了个脚本do.py,可放在同一目录下
运行:python do.py 即可在每个文件头加入此句

import os
chinese = '''# -*- coding: utf-8 -*-
'''
ch = ''
skip = 0
t1 = '# -*-'
t2 = '#-*-'
rootdir = os.getcwd()
for parent,dirnames,filenames in os.walk(rootdir):
        for filename in filenames:
                if filename != 'do.py':
                        f = open(filename)
                        while True:
                                line = f.readline()
                                if line:
                                        if line.startswith(t1) or line.startswith(t2):
                                                skip = 1
                                                break
                                else:
                                        break
                        if skip == 1:
                                f.close()
                                break
                        f.seek(0)
                        temp = f.read()
                        ch = chinese + temp
                        f.close()
                        f = open(filename,'w')
                        f.write(ch)
                        f.close()
                        ch = ''

可多次运行,但只加入一次

作者: thksyou    时间: 2012-07-14 09:08
刚学习python ,学习了.
作者: jacklv159    时间: 2012-07-18 11:49
楼主强悍得不得了。。。
作者: usedel    时间: 2012-07-18 15:36
真是个好东西回复 1# jcodeer


   
作者: waj401    时间: 2012-07-23 10:40
谢谢分享

作者: lovekaiyuan    时间: 2012-07-23 22:37
标记,向楼主学习。
作者: ulovko    时间: 2012-07-24 08:27
感谢分享 楼主太赞! ^_^
作者: incle    时间: 2012-07-26 14:32
不错,是个学习的好方法.以前我学C语言就是用类似的方法.

作者: 北极熊和企鹅    时间: 2012-07-31 11:25
好东西啊。正在学习python 呢,好好研究下,说不好我就真正的入门了。呵呵。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2