从C到Python

Posted zxcv1234

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从C到Python相关的知识,希望对你有一定的参考价值。

基本输入与输出 
输出 
C: printf(“Hello World ”); 
P: print(“Hello World ”)

简单的字符串输出对于printf()/print()函数来说,C和Python差别貌似不大,细心的读者可能会发现,在Python中一条语句后面并没有分号,事实确实如此,在Python中,一般一行一条语句,如果写两条,你需要加上 ; 隔开,但一般没有人会去那么做,想一想在C中有多少次都是因为忘添分号导致编译出错的,所以在Python中,忘了分号吧。 
但是复杂一点的格式输出,比如打印一定精度的数字或者字符串两者就不一样了 
C:

#include<stdio.h>
int main(){
int a=1;
float b =1.0;
char str[10]="abc";
printf("a=%d	b=%.3f	str=%s",a,b,str) ;
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

结果应该为a=1 b=1.000 str=abc 
P:

b = 1.0
str="abc"
print ("a=%d	b=%f	str=%s" % (a, b,str))
print(‘a={}	b={}	str={}‘.format(a, b,str))
  • 1
  • 2
  • 3
  • 4
  • 5

结果为

  • a=1 b=1.000000 str=abc
  • a=1 b=1.0 str=abc

Python中也有类似C语言中的格式输出,就是把逗号换成%,把变量用圆括号包围起来。除此之外,还有format方法。

Python中format方法所做的事情便是将每个参数值替换至格式所在的位置。在Python3中数有四种类型:int、float、bool、complex,int表示为长整型,没有python2 中的 Long,也没有char类型。

正如你所看到的那样,Python中的变量不需要声明,但每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。这一点与c不同,其他诸如转义序列 …都差不多。还有一点,在Python中print()函数 默认是以换行符作为结束值的,C语言中printf()函数结束需要手动换行。如果在Python中不想换行,可以在说完正事后添上end = “ “,注意用逗号隔开就行。如:

print(‘a={}	b={}	str={}‘.format(a,b,str),end =‘‘)
print(‘a={}	b={}	str={}‘.format(a,b,str),end =‘‘)
  • 1
  • 2

结果为 a=1 b=1.0 str=abca=1 b=1.0 str=abc

输入 
C:

#include<stdio.h>

int main() 
{ 
    int a=0;
    float b=0; 
    char str[10]; 
    printf("请输入三个数据,输入的三个数据将会分别赋值给a,b,str,              用逗号隔开
");
    scanf( "%d%f%s",&a,&b,str); 
    printf( "%d	%f	%s	 ",a,b,str); 
    return 0; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

运行结果为:

  • 请输入三个数据,输入的三个数据将会分别赋值给a,b,str, 用逗号隔开 输入 :1 2.0 gg 输出 : 1 2.000000 gg

P:

a,b,str=input("请输入三个数据,输入的三个数据将会分别赋值给a,b,str,              用逗号隔开
").split()
print(‘a={}	b={}	str={}‘.format(a,b,str),end =‘ ‘)
  • 1
  • 2
  • 3
  • 4

运行结果为:

  • 请输入三个数据,输入的三个数据将会分别赋值给a,b,str, 用逗号隔开
  • 输入 :test1 test2.0 22
  • 输出: a=test1 b=test2.0 str=22

input()函数用于从用户那里获得一些文本,有一个用来提示用户输入信息的字符串参数,在C语言中,要想实现同样的功能,需要printf()。当然input只能接受一个值,要想输入多个,用 input().split(),前面就可以加任意多的数据了。

值得注意的是:input返回的是字符串,虽然看着是数字,但其实是字符串,需要int(input())来进行转化,如果输入的不是数字而是字符串,这个转换就会报错,在与用户输入打交道的地方,要注意检查类型是否匹配,可以用Try语句,后面再说。

控制流语句 
在Python中有三种控制流语 句—— if for和while,下面比较其与C语言中的区别 
If 
C

#include <stdio.h> 
int main() 
{ 
    int a=0;
    printf("请输入一个数字
");
    scanf("%d",&a);
    if(a==0)
    {
        printf("a =0");  
    }
    else if(a>0)
    {
        printf("a>0");      
    }
    else if(a<0)
    {
        printf("a>0");    
    }
    else
        printf("a不是数字 ");
    return 0; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

p

a=int(input("请输入一个数字
"))
if a==0:
    print("a =0") 

elif a>0:
    print("a>0")    

else:
   print("a<0 ")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

运行结果一样

  • 请输入一个数字
  • 23333
  • a>0 条

C中:条件语句后面要用括号包含条件,把条件成立时的语句块用花括弧{}围起来,Python中 if 语句后直接接条件再添加冒号,条件成立时执行的语句块保持缩进一致,一般缩进四个空格或者一个制表符。

但是一定要记住,Python使用缩进级别来告诉编译器哪些语句分别属于哪个 块。如果同一语句块中缩进不一致,程序结果可能和预想的结果不一样甚至直接报错,这便是没有用花括弧{}所带来的弊端。

至于else if()简写成elif, Python中不存在switch语句。你可以通过使用if..elif..else语句来实现同样的事 情。

while 
while语句在条件为真的前提下重复执行某块语句 
C:

#include <stdio.h> 
int main() 
{ 
    int a=233,b;
    bool flag=1;
    printf("猜猜a等于多少,随便输入一个数字
");
    scanf("%d",&b);
    while(flag) 
    {
        if(a==b)
        {
            printf("猜对了
");     
            flag=0;
        }
        else 
        {
           if(a>b)
            {
                printf("有点小了
");       
            }
            else
            {
               printf("有点大了
");               
            }
           printf("继续猜: ");    
           scanf("%d",&b);
        }
    }
    return 0; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

P:

a=233
flag=1
b=int(input("猜猜a等于多少,随便输入一个数字
"))
while flag:
    if a==b:
        print("猜对了")     
        flag=0
    else:
        if a>b:
            print("有点小了")  
        else:
            print("有点大了")
        b=int(input("继续猜"))   
else:               
    print(‘游戏结束.‘)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

结果如下

  • 猜猜a等于多少, 随便输入一个数字 2 有点小了

    继续猜3 有点小了

    继续猜255 有点大了

    继续猜233 猜对了 游戏结束.

while在C和Python中,区别在于判断条件的括号()换成冒号:,花括弧{}换成缩进就行了,另外,Python中while可以和else配合使用,else代码块在while 循环的条件变为False时开始执行,也可以不用else语句。其他用法差异不大。 
for 
C:

#include <stdio.h> 
int main() 
{ 
    int i;
    for(i=0;i<10;i++) 
    {
        printf("%d	",i);
    }
    return 0; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

P:

for i
 in range(0,10,1):
    print(i,"	",end="")
  • 1
  • 2
  • 3

输出结果如下

  • 0 1 2 3 4 5 6 7 8 9

Range()函数的第一个参数指定了起始位置,第二个参数限定了范围,第三个参数时步长。range()每次会生成一个数字.

In 运算符 如果在指定的序列中找到值返回 True,否则返回 False,因此也可以用在其他条件语句中,测试实例中包含了一系列的成员,包括字符串,列表或元组。至于什么是列表或这元组,后面介绍。

Python 中的for和与C中的for同Python中的while与C中的while相差不多,都是把C中的括弧()转为冒号:,把循环体的{}换为一致的缩进即可。

喜欢的朋友可以加QQ群,群内有免费资料供大家一起交流学习技术分享图片















以上是关于从C到Python的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将 C 代码片段编译到我的 Perl 模块?

为啥尽管源代码没有变化,但从一个系统到另一个系统的片段数量却有很大差异?

使用Android导航组件时如何从后台获取片段?

导航抽屉活动:在按钮单击时从片段移动到片段

Python - 模块

如何正确编组从Unity到C / C ++的字符串?