如果你已经略懂C语言的语法,那么学习Python对你来说将是一件轻松愉快的事情。
虽然C语言以其接近硬件的特性和高效的执行速度被广泛应用于系统编程,但Python凭借其简洁明了的语法和丰富的库支持,在多个领域展现了极高的开发效率。
接下来,将通过与C语言的对比方式,快速了解Python的基本语法,顺利过渡到Python编程。
1,输出
Python | C | 说明 |
---|---|---|
print("Hello, World!") | `printf("Hello, World!\n");` | Python使用内置的print() 函数进行输出,而C语言使用printf() 函数。两者都可以输出字符串,但C语言需要在字符串末尾添加换行符`\n`来换行。 |
print(f"The value of x is {x}") | `printf("The value of x is %d\n", x);` | Python支持格式化字符串(f-string),可以直接在字符串中插入变量。而在C语言中,需要使用%d 作为占位符,并在后面的参数中提供相应的值。 |
print("The value of pi is approximately %.2f" % 3.14159) | `printf("The value of pi is approximately %.2f\n", 3.14159);` | Python可以使用% 操作符来格式化浮点数,指定小数位数。而在C语言中,同样使用%.2f 作为占位符,并在后面的参数中提供相应的浮点数值。 |
print("The sum of {} and {} is {}".format(a, b, a+b)) | `printf("The sum of %d and %d is %d\n", a, b, a+b);` | Python可以使用str.format() 方法来格式化字符串,将变量插入到占位符的位置。而在C语言中,同样使用%d 作为占位符,并在后面的参数中提供相应的整数值。 |
需要注意的是,Python中的格式化字符串和C语言中的printf()
函数都是用于输出格式化文本的工具,它们的具体语法和使用方式有所不同。在实际编程中,可以根据具体需求选择适合的语言特性来进行输出格式化。
2,注释
Python | C | 说明 |
---|---|---|
# This is a single line comment in Python | /* This is a multi-line comment in C */ | Python使用井号(#)来表示单行注释,而C使用斜杠加星号(/)和星号加斜杠(/)来表示多行注释。 |
"""This is a docstring in Python""" | /* This is a multi-line comment that can be used as a docstring in C */ | Python中的三引号字符串可以用作多行注释或文档字符串(docstring),而在C中,多行注释通常用于文档目的,而不是作为代码的一部分。 |
# This is a comment with a hashtag in Python | // This is a single line comment in C | C语言也支持单行注释,使用双斜杠(//)。 |
需要注意的是,Python的注释不会对代码执行产生影响,而C语言的注释也不会影响代码的执行,但它们会被编译器忽略。此外,Python的注释还可以用于文档生成工具(如Sphinx)来生成API文档,而C语言的注释则主要用于程序员之间的交流和代码维护。
3,算数运算符
Python | C | 说明 |
---|---|---|
+ | + | 加法运算符 |
- | - | 减法运算符 |
* | * | 乘法运算符 |
/ | / | 除法运算符(浮点数除法) |
// | / | 整除运算符(整数除法) |
% | % | 取余运算符 |
** | pow() | 幂运算符(Python使用双星号,C使用pow函数) |
需要注意的是,Python中的除法运算符/
默认执行浮点数除法,而C语言中的除法运算符/
默认执行整数除法。如果要执行浮点数除法,需要在C语言中使用强制类型转换或者使用浮点数常量。
此外,Python中的幂运算符**
可以直接用于两个数字之间的幂运算,而在C语言中,需要使用pow()
函数来进行幂运算。
以下是一些示例代码来说明这些运算符的使用:
python代码
# Python代码示例
a = 10
b = 3
print(a + b) # 输出: 13
print(a - b) # 输出: 7
print(a * b) # 输出: 30
print(a / b) # 输出: 3.3333333333333335
print(a // b) # 输出: 3
print(a % b) # 输出: 1
print(a ** b) # 输出: 1000
c代码
# C代码示例
#include <stdio.h>
#include <math.h>
int main() {
int a = 10;
int b = 3;
printf("%d\n", a + b); // 输出: 13
printf("%d\n", a - b); // 输出: 7
printf("%d\n", a * b); // 输出: 30
printf("%f\n", (float)a / b); // 输出: 3.333333
printf("%d\n", a / b); // 输出: 3
printf("%d\n", a % b); // 输出: 1
printf("%d\n", pow(a, b)); // 输出: 1000
return 0;
}
4,整形
Python | C | 说明 |
---|---|---|
a = 5 | int a = 5; | 声明整型变量并赋值 |
b = -3 | int b = -3; | 声明整型变量并赋值为负数 |
c = 1000000000000 | long long c = 1000000000000LL; | 声明长整型变量并赋值 |
d = 3.14 | double d = 3.14; | 声明浮点型变量并赋值 |
e = "hello" | char *e = "hello"; | 声明字符指针变量并赋值字符串 |
f = True | int f = 1; | 声明整型变量并赋值布尔值True(1) |
g = False | int g = 0; | 声明整型变量并赋值布尔值False(0) |
h = [1, 2, 3] | int h[] = {1, 2, 3}; | 声明整型数组并初始化 |
i = {'a': 1, 'b': 2} | struct i { int a; int b; }; | 声明结构体并定义成员变量 |
j = (1, 2) | struct j { int x; int y; }; | 声明结构体并定义成员变量,然后创建结构体实例并初始化 |
k = None | void *k = NULL; | 声明指针变量并赋值为NULL |
需要注意的是,Python中的整数类型可以自动处理大整数,而C语言需要使用特定的数据类型(如long long)来存储大整数。此外,Python中的布尔值可以直接用True和False表示,而在C语言中,布尔值需要用整型表示,通常用1表示True,0表示False。
5,浮点数
Python | C | 说明 |
---|---|---|
3.14 | 3.14f | Python中的浮点数默认为双精度浮点数(double),而C语言中的浮点数可以是单精度浮点数(float)或双精度浮点数(double)。在C中,需要在数字后面加上后缀f 来表示单精度浮点数。 |
1e-6 | 1e-6f | Python中的科学计数法可以直接用于浮点数,而在C中,需要使用后缀f 来表示单精度浮点数的科学计数法。 |
3.14j | 3.14f + 0.0fi | Python中的复数使用虚部后缀j 表示,而C语言中的复数需要分别指定实部和虚部。例如,3.14f + 0.0fi 表示一个复数,其中实部为3.14,虚部为0.0。 |
需要注意的是,Python中的浮点数运算可能会受到浮点数精度的限制,而C语言中的浮点数运算通常具有更高的精度。此外,Python中的浮点数类型是动态类型的,可以根据需要进行自动转换,而C语言中的浮点数类型是静态类型的,需要在声明时指定具体的类型。
6,布尔型
Python | C | 说明 |
---|---|---|
True | true | Python中的布尔值是首字母大写的,而C语言中的布尔值是小写的。 |
False | false | Python中的布尔值是首字母大写的,而C语言中的布尔值是小写的。 |
and , or , not | && , ` | |
if x: | if (x): | Python中可以直接使用变量作为条件表达式,而C语言需要将变量放在括号内。 |
if not x: | if (!x): | Python中使用not 来取反布尔值,而C语言使用! 来取反。 |
需要注意的是,Python中的布尔类型实际上是整数类型的子类,其中True
等价于整数1,False
等价于整数0。而在C语言中,布尔类型是基本数据类型之一,具有独立的类型标识符。此外,Python中的布尔运算符优先级较低,可能需要使用括号来明确运算顺序。
注意:
C语言从C99标准开始引入了布尔型(_Bool)。
在C99标准之前,C语言中并没有专门的布尔类型,而是使用整型int来表示真假,非零值表示真,零值表示假。为了解决这一问题,C99标准引入了_Bool类型,专门用于表示布尔值。_Bool变量只能赋值为0或1,非零的值都会被存储为1。并且,C99还提供了一个头文件stdbool.h,其中定义了bool、true和false,使得程序员能够像在C++中一样方便地操作布尔类型。
7,复数型
Python | C | 说明 |
---|---|---|
3 + 4j | (3 + 4i) | Python中的复数使用实部和虚部表示,虚部用j 表示。而C语言中的复数使用实部和虚部表示,虚部用i 表示。 |
z = 3 + 4j | double complex z = (3.0 + 4.0*I); | Python中可以直接使用复数类型进行赋值操作。而在C语言中,需要使用特定的复数类型(如double complex )进行声明和赋值。 |
z.real | creal(z) | Python中可以通过.real 属性获取复数的实部。而在C语言中,需要使用函数creal() 来获取复数的实部。 |
z.imag | cimag(z) | Python中可以通过.imag 属性获取复数的虚部。而在C语言中,需要使用函数cimag() 来获取复数的虚部。 |
abs(z) | cabs(z) | Python中可以使用内置函数abs() 来计算复数的模长。而在C语言中,需要使用函数cabs() 来计算复数的模长。 |
conjugate(z) | conj(z) | Python中可以使用内置函数conjugate() 来计算复数的共轭。而在C语言中,需要使用函数conj() 来计算复数的共轭。 |
z1 == z2 | creal(z1) == creal(z2) && cimag(z1) == cimag(z2) | Python中可以直接比较两个复数是否相等。而在C语言中,需要分别比较实部和虚部是否相等。 |
需要注意的是,Python中的复数类型是内置的,可以直接使用。
而在C语言中,需要引入头文件<complex.h>
才能使用复数类型。
此外,C语言中的复数运算通常比Python中的更复杂,因为C语言没有内置的复数运算符,需要使用库函数来进行计算。