Python VS C(下篇)

2023-05-16

Python VS C(下篇)

摊主的个人技术博客:https://rickyxcoder.top/ 🧑🏻‍💻
备用站点:https://rickyxcoder.gitee.io/

写在最前 ✍️

在上一篇博客 Python VS C(上篇)中,摊主从程序运行过程、模块导入、基本数据类型、变量、运算符、条件语句等角度对 C语言 和 Python 进行了对比。

那在这篇博客中,摊主将更进一步,从循环、函数定义、输入、输出等角度,对这两个语言进行对比,帮助掌握其中一门语言的小伙伴快速上手另一门语言。

本篇博客也是摊主的 CS50 课程学习笔记。

CS50 是哈佛大学的计算机导论公开课,也是摊主截止目前认为最棒的计算机导论课程。

授课的 David J. Malan 教授是摊主见过的对计算机教学最热情的老师,也是在计算机基础教学领域对摊主影响最大的一位老师。摊主也希望通过自己的努力,不断向 Malan 教授这样的大牛看齐。

有兴趣的小伙伴可以点击下面的链接,查看 CS50 课程的相关信息。

CS50 官方课程网站:https://cs50.harvard.edu/x/2023/


正文(下篇)

while循环

C语言

基本语法

while (条件) {
    循环体
}

实例

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

Python

基本语法

while 条件:
    循环体

实例

i = 0
while i < 10:
  print(i)
  i++

不同点:

  • C语言的条件表达式需要由括号() 括起来,而 Python 的条件表达式无需添加 () (但是加了也没错)
  • C语言中,循环体需要使用 花括号 {} 括起来;而 Python 中,循环体是由 缩进 来表示的一段代码块,且需要在条件表达式后添加 :

for循环

C语言

基本语法

for (初始化表达式; 条件表达式; 更新表达式) {
    循环体
}

实例

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

Python

在 Python 中,for 循环的变量是 迭代器(iterator),可以是任何可迭代的对象,例如列表、元组、字典、字符串等。

基本语法

for 变量 in 序列:
    循环体

实例

for i in range(1,11):
    print(i)

不同点:

  • 在 C 语言中,for 循环使用一个 循环变量 来表示循环次数,可以使用 ++-- 运算符来递增或递减循环变量的值;而在 Python 中,for 循环使用一个 迭代器 来表示循环次数,循环变量是根据迭代器的值自动计算得到的。
  • 在 C 语言中,循环范围是一个数值区间,通常使用循环变量的值来表示循环次数;而在 Python 中,循环范围是一个序列,可以是任何可迭代的对象,例如列表、元组、字典、字符串等。

do-while循环

C语言

while 循环不同, do-while 循环会 先执行一次循环体,然后再根据循环条件来决定是否继续执行循环。

基本语法

do {
    循环体
} while (条件);

实例

int i = 0;
do {
    printf("%d\n", i);
    i++;
} while (i < 10);

Python

Python 中 没有原生的 do-while 循环结构,但是可以通过 while 循环和 break 语句来实现类似于 do-while 循环的效果。

实例

i = 0
while True:
    print(i)
    i += 1
    if i >= 10:
        break

函数定义

C语言

基本语法

返回类型 函数名(参数列表) {
    函数体
}

实例

// 计算1~n之和
int get_sum(int n) {
    int res = 0;
    for (int i = 1; i <= n; i++) {
        res += i;
    }
    return res;
}

Python

基本语法

def 函数名(参数列表):
    函数体

实例

# 计算1~n之和
def get_sum(n):
    res = 0
    for i in range(1, n):
        res += i
    return res

🍉 PS:C语言中,需要指定返回值类型(没有返回值,需要写 void);而在 Python 中,就像无需指定变量类型一样,无需指定返回值类型。


输入

C语言

C语言使用scanf 语句进行输入,scanf 在读取不同类型的数据时,需要使用不同的格式读取。

int n;
float f;
double avg;
char c;
char str[20];
scanf("%d", &n);  // 读入一个整数
scanf("%f", &f);    // 读入一个单精度浮点数
scanf("%lf",&avg);  // 读入一个双精度浮点数
scanf("%c", &c);    // 读入一个字符
scanf("%s", str);   // 读入一个字符串

Python

Python 使用 input() 语句进行输入,其返回值均为字符串。所以如果想要对输入值进行后续处理,需要进行数据类型的转换。

n = int(input("请输入一个整数:"))
f = float(input("请输入一个浮点数:"))
s = input("请输入一个字符串:")

🍉 PS:在读取用户输入的数据时,可能会出现一些异常情况,例如输入的数据格式不正确等。为了避免这些异常情况导致程序崩溃,Python 使用 异常处理机制 对这些异常情况进行处理。

Python 使用 try-except 语句来捕获 ValueError 异常,如果发生这种异常,则输出提示信息。通过这种方式,可以保证程序在发生异常情况时不会崩溃,而是进行相应的处理。

try:
    n = int(input("请输入一个整数:"))
except ValueError:
    print("输入的数据不是整数,请重新输入!")

算法竞赛 中,C/C++ 和 Python 的输入也有不少差别。

由于算法竞赛中的输入类型较为繁多,摊主打算单独写一篇博客,列举算法竞赛中 C/C++ 和 Python 的输入对比,有兴趣的小伙伴们可以小小期待一下。


输出

C语言

C语言使用 printf 语句进行输出,且需要自行使用 \n 控制换行。

int n = 20;
float f = 3.14;
double avg = 3.1415926;
char c = 'a';
char str[] = "hello, world";
int *pn = &n;
printf("%d\n",n)     // 输出一个整数
printf("%f\n",f)     // 输出一个单精度浮点数
printf("%lf\n",avg)  // 输出一个双精度浮点数
printf("%c\n",c)     // 输出一个字符
printf("%s\n",str)   // 输出一个字符串
printf("%p\n", pn);  // 输出一个指针

Python

Python 使用 print 语句进行输出,且 print 语句默认在结尾补充一个 \n 进行换行。(可以通过设置 end 参数改变默认的 \n 值,见下文)

# 输出一个整数
n = int(input("请输入一个整数:"))
print("整数:", n)

# 输出一个浮点数
f = float(input("请输入一个浮点数:"))
print("浮点数:", f)

# 输出一个字符串
s = "Hello, world!"
print("字符串:", s)

🍉 补充1:在 Python 3 中,print 函数的用法发生了一些变化,可以通过设置 sepend 参数来控制输出的格式:

  • sep 参数用于指定各个参数之间的分隔符,默认为一个空格;

    • 输入

      n = 123
      f = 3.14
      s = "Hello, world!"
      print(n, f, s, sep=", ")
      
    • 输出

      123, 3.14, Hello, world!
      
  • end 参数用于指定输出结束时使用的字符,默认为一个换行符。

    • 输入

      n = 123
      f = 3.14
      s = "Hello, world!"
      print(n, f, s, end="~")
      
    • 输出

      123 3.14 Hello, world!~
      

🍉 补充2:在 Python 3 中,print 函数还可以通过指定 格式化字符串 的方式来输出变量值。

通过在字符串前添加 f 代表 format 字符串,字符串内使用一对花括号 {变量名} 来输出变量的值。

  • 实例1:字符串拼接

    • 代码

      name = "Ricky"
      hobby = "coding"
      print(f"Hello, {name}\nYour hobby is {hobby}")
      
    • 输出结果

      Hello, Ricky
      Your hobby is coding
      
  • 实例2:字符串拼接其他类型变量

    • 代码

      name = "Ricky"
      age = 20
      score = 99.99
      print(f"Hello, {name}\nYour age is {age}\nYour score is {score}")
      
    • 输出结果

      Hello, Ricky
      Your age is 20
      Your score is 99.99
      
  • 实例3:指定浮点数精度为4位

    • 代码

      pi = 3.1415926
      print(f"圆周率是:{pi:.4f}")
      
    • 输出结果

      圆周率是:3.1415
      

写在最后 ✍️

由于篇幅有限,博客中有不少语法细节没有展开,例如 Python print 输出的多种方式等,有兴趣的小伙伴可以自行探索。

而像 Python 中的一些可迭代对象(如列表、字典、集合、元组等)与 C++ 中各种 STL 容器的对比也没有在本篇博客中呈现,是因为这些数据类型的对比,每一个都值得写一整篇博客,所以没有匆忙的列入这篇博客中。

当然,摊主也会在后续的博客中不断完善相关内容,感兴趣的小伙伴们可以期待一波,我们下篇博客再见👋


参考资料 📚

Python官方教程:https://docs.python.org/3/tutorial/

CS50:https://cs50.harvard.edu/x/2023/

ChatGPT:https://openai.com/blog/chatgpt

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python VS C(下篇) 的相关文章

随机推荐

  • visionPro通过网线连接海康相机踩过的坑

    visionPro通过网线连接海康相机踩过的坑 1 搞了两三天 xff0c 笔者用的是笔记本是小新 xff0c 没有网口 xff0c 通过USB转网口连接摄像头 xff0c 明确的告诉你不行 xff0c USB即使达到所谓的千兆 xff0c
  • 完成select的TCP客户端

    include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt arpa inet h gt include lt netinet
  • vins概述

    基本框架如上 xff0c VINS的功能模块可包括五个部分 xff1a 数据预处理 初始化 后端非线性优化 闭环检测及闭环优化 代码中主要开启了四个线程 xff0c 分别是 xff1a 前端图像跟踪 后端非线性优化 xff08 其中初始化和
  • 软件项目管理总结(全)

    软件项目管理知识综述 第一章知识总结 软件项目管理的作用和重要性 项目管理就是将知识 技能 工具与技术应用于项目活动 xff0c 以满足项目的要求 项目管理通过合理 运用与整合特定项目所需的项目管理过程得以实现 项目管理使组织能够有效且高效
  • FreeRTOS 的任务调度方式和具体任务是怎么切换的

    FreeRTOS操作系统主要是两种任务调度方式 xff1a 抢占式调度 每个任务都有不同的优先级 xff0c 任务会一直运行直到被高优先级任务抢占或者遇到阻塞式的 API 函数 xff0c 比如 vTaskDelay 时间片调度 每个任务都
  • linux/UNIX中如何使用fork函数调用exec函数族,实现子进程做特定操作

    前言 在 Unix Linux 操作系统中 xff0c 进程是一种非常重要的概念 进程是程序执行的实例 xff0c 操作系统会为每个进程分配资源 xff0c 进程之间相互独立 xff0c 可以进行通信 在 Unix Linux 中 xff0
  • Opencv学习----矩阵操作-基本操作

    5 1 基本操作 cv absdiff InputArray src1 InputArray src2 OutputArray dst 计算两个数组之间或数组与标量之间的每元素绝对差值 注意 当阵列具有深度CV 32S时 xff0c 不应用
  • 【Linux】实验报告2 Linux基础命令

    作者 xff5c Ricky 水果摊 时间 xff5c 2022年6月27日 文章目录 实验目的实验原理1 Linux文件系统2 Linux存储位置常用命令存放位置头文件存放位置 3 Linux常用命令路径目录文件 实验内容1 Linux常
  • 【Linux】实验报告3 vi、gcc 和 gdb 的使用

    实验三 编辑器 vi 编译器 gcc 和调试器 gdb 的使用 文章目录 实验三 编辑器 vi 编译器 gcc 和调试器 gdb 的使用实验目的实验原理1 vi和vim简介1 1 vi1 2 vim 2 vi的三种工作模式2 1 命令模式
  • 【Linux】实验报告8 Linux文件系统

    作者 xff5c Ricky的水果摊 时间 xff5c 2022年7月6日 文章目录 实验目的实验内容1 文件信息命令2 基本的命令行文件管理3 文件系统权限操作 实验目的 使用 控制字符 执行特殊功能 xff1b 使用 file 和 st
  • 【Java】学习日记 Day16

    作者 xff5c Ricky 水果摊 时间 xff5c 2022年7月21日 x1f308 今日知识点总结 方法重载 xff08 Overload xff09 1 方法重载的定义 方法重载 是指 Java 允许在同一个类中 xff0c 定义
  • 【信息奥赛题解】昆虫繁殖(详细分析题解 & C++ 代码)

    昆虫繁殖问题 x1f31f 题目名称 昆虫繁殖 题目描述 科学家在热带森林中发现了一种特殊的昆虫 xff0c 这种昆虫的繁殖能力很强 每对成虫过 X X X 个月后开始产卵 xff0c 每月产 Y Y
  • 【期末指北】嵌入式系统——选择题(feat. ChatGPT)

    作者 xff5c Ricky 水果摊 时间 xff5c 2023年2月20日 基本信息 本博客摘录了一些 嵌入式系统 的 常见选择题 xff0c 供有需求的同学们学习使用 部分答案解析由 ChatGPT 生成 xff0c 博主进行审核 使用
  • GPT-4 终问世!旧王已死,新王当立!面对AI,人类真的准备好了吗?

    GPT 4 终问世 xff01 旧王已死 xff0c 新王当立 xff01 面对AI xff0c 人类真的准备好了吗 xff1f 摊主一大早醒来 xff0c 就看见 GPT 4 发布的消息 xff0c 不得不感慨今年 AI 更新的速度真是太
  • 【Linux】如何在 Ubuntu 上安装 Clang 编译器

    Linux Ubuntu 上安装 Clang 编译器 摊主将在本文中介绍如何在 Ubuntu 上安装 Clang 编译器 摊主的个人技术博客 xff1a https rickyxcoder top x1f9d1 x1f3fb x1f4bb
  • 【信息奥赛题解】四平方和(详细分析题解 & C++ 代码)

    x1f4da 四平方和 摊主的个人技术博客 xff1a https rickyxcoder top x1f9d1 x1f3fb x1f4bb 备用站点 xff1a https rickyxcoder gitee io x1f680 题目浏览
  • Python VS C(上篇)

    Python VS C xff08 上篇 xff09 摊主的个人技术博客 xff1a https rickyxcoder top x1f9d1 x1f3fb x1f4bb 备用站点 xff1a https rickyxcoder gitee
  • Opencv学习----Opencv宏定义(CV_8U、CV_8S、CV_16U...)

    数据类型宏定义 xff1a define CV 8U 0 define CV 8S 1 define CV 16U 2 define CV 16S 3 define CV 32S 4 define CV 32F 5 define CV 64
  • 分区助手磁盘移动毁我双系统

    如果电脑装有双系统或者多系统的话 我的是win10 43 ubuntu18 04 xff0c 不要随意用分区助手更改系统盘的分区空间 xff01 xff01 情况是这样的 xff0c 我的win10系统中C盘有200GB 可用空间100GB
  • Python VS C(下篇)

    Python VS C xff08 下篇 xff09 摊主的个人技术博客 xff1a https rickyxcoder top x1f9d1 x1f3fb x1f4bb 备用站点 xff1a https rickyxcoder gitee