文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Python结构化编程

Python结构化编程

时间:2007-09-22  来源:jcodeer

C语言经典100例(python版本)的一点儿想法
---Python结构化编程
    最近,将网上流传的C语言经典100例用python写了一遍,算是熟悉了一下python结构化编程,只当是将python作为更为好用的C,因没有太多的了解python,只是已有的python知识,加上C语言基础,总算是马马虎虎准完成(不过还有几个不知道如何写,暂时放一放,随着python的学习深入再将其完成)。现将写python过程中遇到的问题及感受做一下总结。

1.for关键字
功能:循环控制
C语言中的for语句极其灵活,如下:
    for([i = start];[i < end]; [i += step]);
    for(;;);                            //死循环
    for(; i < end;i++);                 //次语句不用设置起始值
    for(i = start;;i++);                //此语句不用设置终止值,死循环
    for(i = start;i < end;);            //此语句不用设置步距值;还是死循环
    for(i = start;i < end; i += 0.5);   //此语句设置步距值为0.5

Python语言for没有C语言那么的灵活,只是遍历对象,借助range实现循环,如下:
    for i in range(start,end,step):
        pass
start:可以省略,此时的值为0
end:必选,为最大值
step:可选,为步距值,默认值为1

range步距值控制使用range,缺点无法浮点步距值
    for f in range(0.0,9.9,0.1):
        pass
如果使用浮点步距值,这样使用:
    for f in map(lambda x : 0.1 * x,range(0,9)):
        pass

2.while循环输入
C语言可以这样书写
    while( (a = getch()) != 0)
        ;
    while (a = int(raw_input(‘input a number:\n'))) != 0:
        pass
变通方法:
    a = raw_input('input a number:\n')
    while a != 0:
        a = raw_input('input a number:\n')
        pass
3.静态变量支持
C语言使用static关键字修饰变量两种用法:
修饰全局变量:防止非本文件访问此变量,控制变量的作用域。
修饰局部变量:延长变量的生命周期到程序结束。
本文不对修饰全局变量讨论,单看局部变量的static。C语言如下:
    void f()
    {
        static int i = 0;
        i++;
        printf("%d\n",i);
    }
每次调用f函数,i值增加1

python没有static变量,如下:
    def f():
        i = 0
        i += 1
        print i
i只是局部变量,每次开始其值复制0,所以i值一直为1
4.图形编程的支持
C语言有graphic库,Turbo C2.0下可以使用,简单的进行绘图,包含点(pixel)、线(line)、矩形(ranctangle)、椭圆(ellipse)等。Python没有直接使用这个库的模块(没有找到相应的模块支持),但可以使用UI图形库,如Tk

5.字符串的使用
C语言的字符串是以'\0'为结束标志,C语言的字符串称之为内存块更为确切,所有的字符串操作就是对内存的操作,也许是底层语言的优势吧。
C实现判断字符串是否结束:
    if(p[i] == '\0');
python没有’\0‘,不能使用p[index] == '0'来进行判断,但python语言中的字符为一比较完美的数据类型,有自己的操作函数,与C语言字符串最大的不同是:python字符串不可修改。

6.预编译宏支持
C语言编写的程序需要编译,有预编译的概念,使用”宏“在编译时可以对代码进行生成。如:
定义常量:
    #define __c__ 'c language'
定义"宏函数”
    #define min((x),(y)) ((x) > (y) ? (y) : (x))

python为动态语言,不需要编译,要实现C语言的预处理功能,不可行。变通方法:
定义字符串:
    __p__ = 'python language'
定义函数:
    def min:
        if x > y:
            return y
        else:
            return x
7.指针的使用
    可谓是C语言推崇的亮点,可谓C的杀手锏,灵活的使用指针,能够写出高效的代码,但C指针也是最容易出错,最难掌握的一个特性,稍有不慎,轻则结果莫名其妙,内存泄漏,重则程序直接崩溃。
    Python则没有指针的概念,对于用C指针实现的数据结构,python实现起来倒是麻烦,所以直接使用python现有的数据结构了。如:C100例中的链表操作就直接使用python的list。
8.标准输出
    C语言中的printf格式化输出,不带换行
    python语言中的print格式化输出,带换行符,为了与C的printf输出,有时还得使用
sys.stdout.write来替换printk,如:例子中的图案打印
9.结构
    C语言中的结构可以将数据结构化,便于数据的管理,python与之相对的为class,简单的实现也有其他方法,如使用list来模拟.C将数据结构写入文件,直接使用write,将要写入的数据地址传递给这个函数就可以了,python麻烦了,write的参数为string,直接写入list可以,要是写入个class能使什么数据?没有试过。
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载