Python结构化编程

发布时间:2019-07-06 10:47:13编辑:auto阅读(1714)

    最近,将网上流传的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能使什么数据?没有试过。


    原文:http://blog.sina.com.cn/s/blog_7bad21ed0102we37.html

关键字

上一篇: python 读取 ini配置

下一篇: python format函数