python零基础入门 (3)-- python语法入门

前言

在上一讲 python零基础入门 (2)-- 从Hello World开始 中我们已经成功创建了自己的第一个python程序,打印出了那句经典的Hello World,这一讲我们将继续基础知识的学习,了解python的语法特点。

python语法简介

首先,python的语法跟c语言有有一些明显的区别:

1. 语法结构

C语言使用分号(;)作为语句的结束符,而Python使用换行和缩进(通常是4个空格)来表示代码块的开始和结束。Python强制要求使用一致的缩进,而C语言对缩进没有强制要求。

比如一个简单的轮询算法, c语言的写法是这样的:

#include <stdlib.h>
#define I_MAX 3u
#define J_MAX 2u
void cLoop(void)
{
	int i = 0;
	int j = 0;
	for(i = 0 ;i < I_MAX ; i++)
	{
		for(j = 0 ;j < J_MAX ; j++)
		{
			printf("value of i is: %d,",i );
			printf("value of j is: %d \n",j );
		}
	}
}

int main()
{
    cLoop();
}

输出结果

value of i is: 0,value of j is: 0 
value of i is: 0,value of j is: 1 
value of i is: 1,value of j is: 0 
value of i is: 1,value of j is: 1 
value of i is: 2,value of j is: 0 
value of i is: 2,value of j is: 1 

每行代码开头的缩进只是为了美观,而不是作为代码的结束符,即使我们那前面代码的所有缩进都去掉,就像这样

#include <stdlib.h>
#define I_MAX 3u
#define J_MAX 2u
void cLoop(void)
{
int i = 0;
int j = 0;
for(int i = 0 ;i < I_MAX ; i++)
{
for(int j = 0 ;j < J_MAX ; j++)
{
printf("value of i is: %d,",i );
printf("value of j is: %d \n",j );
}
}
}

int main()
{
cLoop();
}

仍然不影响运行结果

value of i is: 0,value of j is: 0 
value of i is: 0,value of j is: 1 
value of i is: 1,value of j is: 0 
value of i is: 1,value of j is: 1 
value of i is: 2,value of j is: 0 
value of i is: 2,value of j is: 1 

下面我们尝试用python来实现上述功能,这个时候我们的缩进是符合python规则的

def python_loop():
   I_MAX = 3
   J_MAX = 2
   for i in range(I_MAX):
       for j in range(J_MAX):
           print("value of i is:", i, end=", ")
           print("value of j is:", j)
           
python_loop()

输出结果

PS D:\pythonLearn> python .\MyPython.py
value of i is: 0, value of j is: 0
value of i is: 0, value of j is: 1
value of i is: 1, value of j is: 0
value of i is: 1, value of j is: 1
value of i is: 2, value of j is: 0
value of i is: 2, value of j is: 1

下面我们去掉一部分缩进

def python_loop():
   I_MAX = 3
   J_MAX = 2
   for i in range(I_MAX):
   for j in range(J_MAX):
           print("value of i is:", i, end=", ")
           print("value of j is:", j)
           
python_loop()

输出结就会提示我们有缩进问题expected an indented block

PS D:\pythonLearn> python .\MyPython.py
  File "D:\pythonLearn\MyPython.py", line 7
    for j in range(J_MAX):
    ^
IndentationError: expected an indented block after 'for' statement on line 6

根据上述例子,我们就了解了python代码在分隔符上跟c语言的区别,以及我们所要遵循的规则。

2. 变量声明

在C语言中,需要在使用变量之前先声明变量的类型。变量的声明通常在函数的开头,也可以在代码块的任何地方进行。

比如前文中的ij两个变量,在c语言中我们就需要对其进行初始化才能使用

int i = 0;
int j = 0;

但是在python中我们就可以直接使用

for i in range(I_MAX):
       for j in range(J_MAX):

3. 数据类型

C语言提供了基本的数据类型,如整数、浮点数、字符等,而Python的数据类型更加丰富,包括整数、浮点数、字符串、列表、元组、字典、集合等。

在C语言中,提供了基本的数据类型,如整数、浮点数、字符等。以下是一些常见的C数据类型的示例:

#include <stdio.h>

int main()
{
    int num = 10; // 整数类型
    float pi = 3.14; // 浮点数类型
    char letter = 'A'; // 字符类型
    
    printf("num = %d\n", num);
    printf("pi = %f\n", pi);
    printf("letter = %c\n", letter);
    
    return 0;
}

在这个示例中,我们声明了一个整数类型的变量num,一个浮点数类型的变量pi,和一个字符类型的变量letter。然后使用printf函数打印出它们的值。

num = 10
pi = 3.140000
letter = A

而在Python中,数据类型更加丰富。以下是一些常见的Python数据类型的示例:

num = 10 # 整数类型
pi = 3.14 # 浮点数类型
letter = 'A' # 字符串类型

my_list = [1, 2, 3, 4] # 列表类型
my_tuple = (1, 2, 3, 4) # 元组类型
my_dict = {'name': 'Alice', 'age': 25} # 字典类型
my_set = {1, 2, 3, 4} # 集合类型

print("num =", num)
print("pi =", pi)
print("letter =", letter)
print("my_list =", my_list)
print("my_tuple =", my_tuple)
print("my_dict =", my_dict)
print("my_set =", my_set)

在这个示例中,我们声明了一个整数类型的变量num,一个浮点数类型的变量pi,和一个字符串类型的变量letter。此外,我们还声明了一个列表类型的变量my_list,一个元组类型的变量my_tuple,一个字典类型的变量my_dict,和一个集合类型的变量my_set。然后使用print函数打印出它们的值。

num = 10
pi = 3.14
letter = A
my_list = [1, 2, 3, 4]
my_tuple = (1, 2, 3, 4)
my_dict = {'name': 'Alice', 'age': 25}
my_set = {1, 2, 3, 4}

4. 数组和列表

在C语言中,数组是一种固定大小的连续内存空间,而Python中的列表是一种动态大小的数据结构,可以根据需要自动调整大小。

#include <stdio.h>

int main()
{
    int arr[5] = {1, 2, 3, 4, 5};

    for(int i = 0; i < 5; i++)
    {
        printf("arr[%d] = %d\n", i, arr[i]);
    }

    return 0;
}

在这个示例中,我们声明了一个包含5个整数的数组arr,并初始化了数组的值。然后使用for循环遍历数组,打印出每个数组元素的值。

arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5

而在Python中,列表是一种动态大小的数据结构,可以根据需要自动调整大小。以下是一个使用列表的Python示例:

my_list = [1, 2, 3, 4, 5]
my_list.append(6)

for i in range(len(my_list)):
    print("my_list[{}] = {}".format(i, my_list[i]))

在这个示例中,我们声明了一个包含5个整数的列表my_list,并初始化了列表的值。但是,我们在初始化之后又利用list类型内置的append函数扩展了一个成员,使用for循环和range函数遍历列表,打印出每个列表元素的值。

my_list[0] = 1
my_list[1] = 2     
my_list[2] = 3     
my_list[3] = 4     
my_list[4] = 5     
my_list[5] = 6 

5. 循环语句

C语言中使用for循环和while循环来控制程序的流程,而Python中的循环语句更加简洁,只有for循环,可以遍历任何可迭代的对象。

前面已经多次使用了循环语句,c语言中的语法如下:

for(int i = 0; i < 5; i++)
{
    printf("i = %d\n", i);
}

python中的语法:

for i in range(5):
    print("i = {}".format(i)

6. 函数定义

在C语言中,函数需要在使用之前先进行函数原型的声明,而Python中的函数可以直接定义和调用,不需要事先声明函数原型。

以下是一个使用函数原型声明的C语言示例:

#include <stdio.h>

// 函数原型声明
int add(int a, int b);

int main()
{
    int result = add(3, 4); // 调用函数

    printf("result = %d\n", result);

    return 0;
}

// 函数定义
int add(int a, int b)
{
    return a + b;
}

在这个示例中,我们首先在代码的开头进行了函数原型的声明,声明了一个名为add的函数,该函数接受两个整数参数,并返回它们的和。然后在主函数中调用了这个函数。

而在Python中,函数可以直接定义和调用,不需要事先声明函数原型。以下是一个使用函数定义的Python示例:

def add(a, b):
    return a + b

result = add(3, 4) # 调用函数

print("result =", result)

在这个示例中,我们直接定义了一个名为add的函数,该函数接受两个参数,并返回它们的和。然后在代码的后面直接调用了这个函数。

总结来说,在C语言中,函数需要在使用之前先进行函数原型的声明,而Python中的函数可以直接定义和调用,不需要事先声明函数原型。这使得Python中的函数定义更加简洁和灵活。

7. 内存管理

在C语言中,需要手动管理内存的分配和释放,包括使用malloc()和free()函数。而Python使用垃圾回收机制来自动管理内存,开发者不需要手动释放内存。

以下是一个使用malloc()和free()函数进行内存管理的C语言示例:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int* ptr = (int*)malloc(sizeof(int));

    if(ptr == NULL)
    {
        printf("内存分配失败\n");
        return 1;
    }

    *ptr = 10;

    printf("*ptr = %d\n", *ptr);

    free(ptr);

    return 0;
}

在这个示例中,我们使用malloc()函数分配了一个整数大小的内存空间,并将其赋值给指针ptr。然后我们使用该内存空间存储了一个整数值,并打印出来。最后,我们使用free()函数释放了之前分配的内存。

而在Python中,使用垃圾回收机制来自动管理内存,开发者不需要手动释放内存。以下是一个使用Python进行内存管理的示例:

x = 10
print("x =", x)
# 不需要手动释放内存

8. 异常处理

Python提供了异常处理机制,可以捕获和处理程序运行过程中的异常。而C语言中没有内置的异常处理机制,需要开发者手动处理错误和异常,以下是一个使用异常处理的Python示例:

try:
    x = 10 / 0
except ZeroDivisionError:
    print("除数不能为零")

在这个示例中,我们尝试将10除以0,这会引发一个ZeroDivisionError异常。使用try-except语句,我们可以捕获这个异常并进行相应的处理。在except块中,我们打印出了一个错误消息。

而在C语言中,没有内置的异常处理机制,需要开发者手动处理错误和异常。以下是一个使用手动处理错误的C语言示例:

#include <stdio.h>

int main()
{
    int x = 10, y = 0;

    if(y == 0)
    {
        printf("除数不能为零\n");
        return 1;
    }

    int result = x / y;

    printf("result = %d\n", result);

    return 0;
}

在这个示例中,我们首先检查除数y是否为零。如果是零,我们手动打印出一个错误消息,并返回一个非零值表示程序异常终止。否则,我们进行正常的除法运算并打印结果。

总结来说,Python提供了异常处理机制,可以捕获和处理程序运行过程中的异常。开发者可以使用try-except语句来捕获异常并进行相应的处理。而C语言中没有内置的异常处理机制,需要开发者手动处理错误和异常,通过条件判断和手动打印错误消息来处理异常情况。

结语

这一讲我们从python和c语言在语法上的不同切入,带大家了解了python的语法特点,也编写了示例代码,下一讲我们将从python的基本数据类型讲起,继续我们的python零基础学习之路。

此专题教程的程序我也将同步更新到GitHub仓库GitHub-pythonLearn,跟着我一起把自己的学习代码积累起来吧,不积跬步无以至千里,不积小流无以成江海,加油吧诸君!!!

参考代码仓库

GitHub-pythonLearn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废柴程序员-熊熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值