Files
cpp-courseware/4.宣传与沟通资料/Python 学生/C++ 基本语法与 Python 的区别.md
T

7.7 KiB
Raw Blame History

C++ 基本语法与 Python 的区别

第一部分:程序的基本结构

1. Python 基础程序 和 C++ 的基础程序

在 Python 中,你想打印一句话,只需要直接写一行代码:

# Python 代码
print("Hello, World!")

Python 是解释型语言,它从第一行开始直接往下读并执行。

但在 C++ 中,哪怕只是打印一句话,你也需要搭建一个完整的代码框架结构。因为C++ 是编译型语言,代码必须先完整翻译成机器码,然后才能运行,以下的代码为 C++ 中 Hello world 程序实现。注:C++代码中 // 后的内容表示注释。

// C++ 代码的基本框架
#include <iostream> 
using namespace std;

int main() {
    cout << "Hello, World!" << endl; // 这是注释,用于输出 Hello, world!
    return 0;
}

2. C++ 结构拆解(为什么要有这么多行?)

  • #include <iostream>:类似于 Python 的 import。iostream 是“输入输出流”的意思,没有这一行,C++ 连怎么把字显示在屏幕上都不知道,这一行相当于是拿到了 iostream 这个工具箱,让它可以获取里面的输出工具。
  • using namespace std;:声明使用“标准命名空间”。你可以把它理解为告诉 C++:“接下来我用到的一些基础工具,都去标准工具箱(std)里找”。
  • int main() { ... }:这是 C++ 最重要的地方,叫做“主函数”。在 C++ 里,程序永远从 main 函数的第一行开始执行。大括号 {} 里面的内容,就是要执行的具体指令代码。
  • return 0;:表示程序正常结束,向操作系统汇报圆满完成了任务,没有错误。

3. 两个语法习惯的区别

  • 分号 ; 是结尾:在 Python 里,换行就代表一句话结束。在 C++ 里,几乎每一条语句结束时,都必须加上英文分号 ;。 忘记写分号是 python 使用者在 C++ 里最常犯的错误之一。
  • 大括号 {} 取代了缩进:Python 靠严格的缩进来判断代码块。C++ 不管缩进(哪怕你全写在一行它也能运行),C++ 是靠大括号 {} 来圈定代码块的。当然,为了人类易读,我们在 C++ 里依然会保持良好的缩进习惯。

第二部分:变量与数据类型

1. 动态类型 和 静态类型

在 Python 里,变量像是一个有弹性的袋子,你往里面装什么,它就是什么:

# Python: 动态类型
age = 18       # 此时是整数
age = "十八"   # 突然变成字符串了,Python 完全OK

C++ 是严格的“静态类型”语言。在 C++ 里,变量更像是一个定制的容器,你在制造(声明)这个容器的时候,必须提前规定好它只能装什么类型的东西,而且永远不能变。

那么在 C++ 定义变量的语法是 数据类型 变量名 = 初始化值;(其中 = 初始化值 的部分可以省略不进行初始化)。

// C++是静态类型 (必须先写数据类型,再写变量名字,后面可以进行初始化)
int age = 18; 
// age = "十八"; // 错误!C++ 会直接报错:不能把文字塞进整数盒子里!

2. C++ 中最常用的基本数据类型

在 Python 里的类型,在 C++ 里都有对应,但划分得更细:

  • int :整数(例如 10, -5, 0)。
  • double:双精度浮点数,也就是小数(例如 3.14, -0.99)。C++ 中还有一种叫 float 的小数,但 double 精度更高,更常用。
  • char :单个字符。注意!在 C++ 里,单字符必须用单引号(例如 'A', '?'),双引号是留给字符串的。
  • string:字符串(例如 "Hello")。需要引入 #include <string> 才能使用,并且字符串需要用双引号包裹。
  • bool :布尔值。代表真假。

3. 变量的声明与初始化

在 C++ 里,你可以先准备好盒子(声明),以后再往里装东西(赋值):

int score;       // 声明变量:准备了一个叫 score 的整数盒子
score = 100;     // 赋值:把 100 放进去

double price = 9.9; // 声明并同时初始化(推荐这种做法)

第三部分:输入与输出

在 Python 里,我们用 print() 输出,用 input() 输入。 在 C++ 里,输入输出的概念有点像是一条河流。

1. 输出:cout

C++的输出是使用 cout 配合输出符号 << (像两个向左的箭头,表示把数据流向屏幕)。

// Python 的输出语法
# age = 16;
# print("我的年龄是", age)

// 对应 C++ 的实现:
int age = 16;
cout << "我的年龄是 " << age << endl; 
  • 你可以用 << 把很多东西串联起来。
  • endl (End Line) 表示换行,相当于 Python print 默认的换行效果。你也可以在字符串里添加 \n 来换行。

2. 输入:cin

C++的输入是使用 cin 配合输入符号 >> (箭头向右,表示把从键盘读到的数据流向变量)。

输入这里 C++ 比 Python 方便一点! 在 Python 里,input() 拿到的永远是字符串,你要用 int(input()) 强行转换。 但在 C++ 里,因为变量已经提前规定好了类型,cin 会自动把你的键盘输入转换成合适的类型!

// Python 代码:
# age_str = input("请输入年龄: ")
# age = int(age_str)

// C++ 代码:
int age; // 获取输入前,必须先准备好一个空盒子来装这个输入的数据
cout << "请输入年龄: "; // 提示用户
cin >> age; // 程序暂停,等待用户输入,并自动转为整数放进 age 盒子

第四部分:条件判断

条件判断的逻辑在任何编程语言里都是相通的(无非就是如果...就...否则...),主要的区别在于符号和格式。

1. 结构对比 (if - elif - else vs if - else if - else)

我们直接看对比。假设我们要编写根据分数判断 优秀、及格、不及格 的三个等级的代码:

Python 版本:

score = 85

if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

C++ 版本:

int score = 85;

// 注意 1:条件必须用圆括号 () 包起来!
// 注意 2:执行的代码块必须用大括号 {} 包起来!
if (score >= 90) {
    cout << "优秀" << endl;
} 
else if (score >= 60) {  // 注意 3:C++ 里没有 elif,必须写完整的 else if
    cout << "及格" << endl;
} 
else {
    cout << "不及格" << endl;
}

2. 逻辑运算符的变换 (and, or, not)

在 Python 里,判断多个条件时,使用的是英语化的 and、or、not。 在 C++ 里,需要使用数学领域的符号:

  • 与 (and) 变成 &&
  • 或 (or) 变成 || (竖线符号,通常在回车键上方,按 Shift + \ 打出)
  • 非 (not) 变成 !

举个例子:判断一个人是不是青少年(年龄在 13 到 19 岁之间):

  • Python: if age >= 13 and age <= 19: (Python 甚至允许 if 13 <= age <= 19:)
  • C++: if (age >= 13 && age <= 19) (但是C++ 绝对不能连写,必须用 && 连接两个独立的判断)

3. 布尔值的细微差别

  • Python 的真假是首字母大写的:True / False
  • C++ 的真假是全小写的:true / false

作为有 Python 基础的同学,在写 C++ 时一定要注意以下几个问题:

  1. 分号:每句话代码都要加上 ; 。
  2. 类型:要用一个新变量,必须要规定数据类型,例如 int 、double 。
  3. 括号: if 后面,条件需要加上 () 。并且代码块也要加上 {} 。
  4. 结构:写代码前要写上C++程序框架, int main() { ... } ,以及前面的 include 以及 using namespace std;。