Python VS C(下篇)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/17280.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux入门2(常用命令)

Linux入门2 Linux常用命令快捷键基础命令文件查看命令文件编辑命令进程管理命令用户管理命令 Linux常用命令 快捷键 Ctrl Alt T打开终端 Ctrl shift 加号 终端字体放大 ctrl 减号 终端字体缩小 基础命令 sudo su 进入管理员目录 exit 返回到用户目录 ls 当前目录下的文…

Illustrator如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具箱 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对Illustrator进行了学习&#xff0c;本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对软件界面基本功能进行阐述。    1…

K8s 安全是云安全的未来

导语 到 2025 年&#xff0c;保护 Kubernetes (K8s) 将被认为是云安全最重要的方面。 在最成功的组织中&#xff0c;CTO 和 CISO 已经意识到 Kubernetes 安全的重要性。 但是&#xff0c;虽然 Kubernetes 已经占 CTO 云支出的很大一部分&#xff0c;但 CISO 仍然有所落后。 大…

Android Studio开发图书管理系统APP

Android Studio开发项目图书管理系统项目视频展示&#xff1a; 点击进入图书管理系统项目视频 引 言 现在是一个信息高度发达的时代&#xff0c;伴随着科技的进步&#xff0c;文化的汲取&#xff0c;人们对于图书信息的了解与掌握也达到了一定的高度。尤其是学生对于知识的渴…

asp.net基于web的学生选课成绩管理系统86程序

系统使用Visual studio.net2010作为系统开发环境&#xff0c;并采用ASP.NET技术&#xff0c;使用C#语言&#xff0c;以SQL Server为后台数据库。 本系统主要包含了“登录模块”、“系统用户管理模块”、“课程信息管理模块”、“教师信息管理模块”、“班级信息管理模块”、“…

Lattics ——一款简单易用、好看强大的知识管理工具

如何选择一款适合自己的知识管理工具&#xff1f; 对于很多用户而言&#xff0c;在追求效率的路上&#xff0c;经常需要一款适合自己的知识管理工具。然而&#xff0c;随着工具市场的发展&#xff0c;各种新兴工具层出不穷。在传统领域&#xff0c;有印象笔记、Onenote 为代表…

【笔试强训选择题】Day7.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录…

如何充分利用实时聊天系统?

随着商业和电子商务领域经历快速的数字革命&#xff0c;必须迅速适应的一个因素是我们与客户的互动方式。几年前&#xff0c;电子邮件和电话还是主要的客户联系方式。如今&#xff0c;客户期望更好的服务和更即时的沟通。实时聊天支持系统可以解决此问题&#xff0c;如SaleSmar…

IntelliNode:Node.js大模型访问统一接口库【Gen AI】

使用最新的 AI 模型更新你的应用程序可能具有挑战性&#xff0c;因为它涉及了解不同 AI 模型的复杂性并管理许多依赖项。 IntelliNode 是一个开源库&#xff0c;旨在通过提供统一且易于使用的界面来解决集成 AI 模型的挑战。 这使开发人员能够快速构建 AI 原型并使用高级 AI 功…

CompletableFuture

线程基础知识复习 大神&#xff1a;Doug Lea java.util.concurrent java.util.concurrent.aomic Java.util.concurrent.locks 硬件 摩尔定律&#xff1a; 它是由英特尔创始人之一 Gordon Moore(戈登摩尔)提出来的。其内容&#xff1a; 当价格不变是&#xff0c;集成电路…

python相对路径与绝对路径

9.1 Python 绝对路径与相对路径 - 知乎 (zhihu.com) 目录 1. 绝对路径 1.1 概念 1.2 用绝对路径打开文件 1.2 相对路径 1.3 python路径表示的斜杠问题 1. 绝对路径 1.1 概念 绝对路径 指完整的描述文件位置的路径。绝对路径就是文件或文件夹在硬盘上的完整路径。 在 Win…

Java 基础入门篇(二)—— Java 基础语法

文章目录 一、注释二、字面量三、变量3.1 变量概述3.2 变量在计算机中的底层原理 四、数据类型五、关键字、标志符六、类型转换6.1 自动类型转换6.2 表达式的自动类型转换6.3 强制类型转换 七、运算符7.1 基本算数运算符7.2 符号做连接符7.3 自增自减运算符7.4 赋值运算符7.5 …

基于simulink采用 QSHB 和 HBPS 算法的混合 MIMO 波束成形仿真

一、前言 本例展示了多输入多输出 &#xff08;MIMO&#xff09; 无线通信系统的 Simulink 模型。无线系统使用混合波束成形技术来提高系统吞吐量。 二、介绍 5G和其他现代无线通信系统广泛使用MIMO波束成形技术进行信噪比&#xff08;SNR&#xff09;增强和空间复用&#xff0…

Netty(2)

Netty 文章目录 Netty4 Netty 模型4.1 Netty 模型介绍4.2 Netty demo4.3 Netty 异步模型4.3.1 基本介绍4.3.2 异步模型4.3.3 Future-Listener 机制4.4 Netty 任务队列 task 4 Netty 模型 4.1 Netty 模型介绍 Netty 线程模式&#xff1a;Netty 主要基于主从 Reactor 多线程模型…

开放式基金净值估算数据 API 数据接口

开放式基金净值估算数据 API 数据接口 全量基金数据&#xff0c;实时数据&#xff0c;所有基金数据。 1. 产品功能 返回实时开放式基金净值估值可定义所有基金估值数据&#xff1b;多个基金属性值返回&#xff1b;多维指标&#xff0c;一次查询毫秒级返回&#xff1b;数据持续…

全球5G市场最新进展及未来展望

从智慧医疗到万物互联&#xff0c;从无人驾驶到关乎我国未来发展的“新基建”&#xff0c;自2019年全球5G商用启动后&#xff0c;5G就步入了发展“快车道”;2022年继续保持快速稳定的增长态势&#xff0c;在网络建设、人口覆盖、终端形态等方面发展势头强劲&#xff0c;在技术标…

【致敬未来的攻城狮计划】— 连续打卡第二十三天:RA2E1的存储器基础知识

系列文章目录 1.连续打卡第一天&#xff1a;提前对CPK_RA2E1是瑞萨RA系列开发板的初体验&#xff0c;了解一下 2.开发环境的选择和调试&#xff08;从零开始&#xff0c;加油&#xff09; 3.欲速则不达&#xff0c;今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

每天一道算法练习题--Day18 第一章 --算法专题 --- ----------前缀树

前缀树 字典树也叫前缀树、Trie。它本身就是一个树型结构&#xff0c;也就是一颗多叉树&#xff0c;学过树的朋友应该非常容易理解&#xff0c;它的核心操作是插入&#xff0c;查找。删除很少使用&#xff0c;因此这个讲义不包含删除操作。 截止目前&#xff08;2020-02-04&a…

基于R语言APSIM模型应用

随着数字农业和智慧农业的发展&#xff0c;基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…

净利润下滑13%,帅丰电器已掉队?

近年来&#xff0c;随着市场竞争加剧&#xff0c;厨电行业加速洗牌&#xff0c;超60%杂牌或被淘汰出局&#xff0c;三类品牌全部被清退。而作为毛利最高的厨电细分市场&#xff0c;集成灶行业吸引了大批企业涌入&#xff0c;市场渗透率快速提升&#xff0c;已经超过30%&#xf…
最新文章