首页 > 编程语言 >Python转C选手常见问题与注意事项

Python转C选手常见问题与注意事项

时间:2023-12-03 13:56:20浏览次数:29  
标签:常见问题 Python print int 注意事项 字符串 输入 大括号

1 强制变量转换的不同含义

Python的int(s)转换的是对应的数字,而C语言转换的是对应的ASCII编码,如:

Python的强制变量转换

s='0'
a=int(s)
print(a) #输出结果为0
s='a'
a=int(s)
print(a) #程序报错

C的强制变量转换

s='0'
a=int(s)
printf("%d",a) //输出结果为48
s='a'
a=int(s)
printf("%d",a) //输出结果为96

Python使用int(s)可以实现字符串到数字的自动转换,但C语言的int(s)只能转换一个字符。

倘若要把字符串‘1234’转换成数字,Python可以这么写:

s="1234"
a=int(s)

C需要这么写

char s[10]="1234";
int a=0;
for (int i=0;i<strlen(s);i++) a=a*10+int(s[i])-48;

人类很容易理解“1234”是一千二百三十四的意思,但机器并不懂,他只知道字符串s里面包含了四个字符'1','2','3','4',对应的ASCII编码分别是49,50,51,52。所以我们需要把机器理解的编码一位一位的转换成我们想要的数字。Python是为了方便产生的简写,他的int(s)底层逻辑依旧是按位转换的,只不过他对这些命令进行了封装,以方便我们程序员调用。

我们需要记住三个ASCII编码('0'--48,'A'--65,'a'--97)。当然如果记不住,直接用'0'替代48也是可以的。编译器会实现自动转换

2 程序层级问题

Python里是严格根据缩进划分层级的,如

print('when you enter APA, you can...')
for i in range(10):
    for j in range(8):
        print('eat')
        print('drink')
    	print('play')
    print('study programming')
print('end')

缩进四格的就是在一层循环内,缩进八格的就是在两层循环内,没有缩进就是在循环外。

C则是使用大括号来区分层级,对缩进没有严格要求

printf("when you enter APA, you can...");
for (int i=0;i<10;i++){
    for (int j=0;j<8;j++){
        printf("eat");
        printf("drink");
    	printf("play");
    }
    printf("study programming");
}
printf("end");

一层大括号里是一层循环内,两层大括号里是两层循环内,大括号外是循环外。

当然也有的时候你会看不到大括号,比如:

printf("when you enter APA, you can...");
for (int i=0;i<10;i++)
    if (i<5) printf("eat");
printf("drink");

如果for循环(或if语句)里只有一条命令,这时大括号可加可不加。如果没有大括号,则默认for循环(或if语句)后面的第一条命令隶属于该循环,第二条开外都在循环以外。

怎么区分一条命令呢?一个分号就是一条命令,命令与命令用分号分割开来。

3 字符串的输入与输出

(1)输入一个字符串,字符串内保证没有空格(可以理解成一个单词)

scanf("%s",&s); //c语言
cin>>s; //C++

(2)输入N,随后输入N个字符串,字符串内保证没有空格(可以理解成N个单词)

scanf("%d",&n);
for (int i=0;i<n;i++)
    scanf("%s",&s[i]); //c语言

cin>>n; 
for (int i=0;i<n;i++)
    cin>>s[i]//C++

(3)输入一行字符串,字符串内可能包含空格(可以理解成一个句子,不知道几个单词)

gets(s);//C语言,不推荐比赛使用
cin.getline(s); //C++,推荐比赛使用!

(4)输入N,随后输入N个字符串,字符串内可能包含空格(可以理解成N个句子)

scanf("%d",&n);
getchar();//一定要加getchar(),否则当我们输入N后按下回车,机器会把回车符默认成第一句空话
for (int i=0;i<n;i++)
    gets(s[i]); //c语言

cin>>n; 
getchar();//一定要加getchar(),否则当我们输入N后按下回车,机器会把回车符默认成第一句空话
for (int i=0;i<n;i++)
    cin.getline(s); //C++

(5)输入单一字符

char c=getchar();

字符数组与字符串的基本函数:

image-20231201112412943 image-20231201112412943

4 其他小不同

(1)单引号双引号

C语言里单引号('')代表字符型(char s='a'),双引号("")代表字符串(char s[10];s="abcde")

Python单双引号完全等同,可互用

(2)欢迎补充...

标签:常见问题,Python,print,int,注意事项,字符串,输入,大括号
From: https://www.cnblogs.com/rachel0701/p/17872915.html

相关文章

  • Java开发者的Python快速进修指南:自定义模块及常用模块
    好的,按照我们平常的惯例,我先来讲一下今天这节课的内容,以及Java和Python在某些方面的相似之处。Python使用import语句来导入包,而Java也是如此。然而,两者之间的区别在于Python没有类路径的概念,它直接使用.py文件的文件名作为导入路径,并将其余的工作交给Python解释器来扫描和处理。另......
  • python3 打包上传pypi失败及解决方法
    1、打包及上传 1.1、安装构建和打包工具pip3installbuild#构建包的工具pip3installtwine#上传包的工具pip3installwheel#heel格式1.2创建 setup.pyfromsetuptoolsimportsetup,find_packagessetup(name='zykj-py-apollo',version='1.23.1......
  • 奇迹MU常见问题如何解决
    奇迹运行时最重要的就是服务器是否稳定,服务器中千万不能出现太多的问题和漏洞,想要实现这些要求就需要gm掌握一些管理服务器的技术和方法。今天要为各位讲解的是怎样防止游戏中出现开门黑屏的漏洞。无法注册ID的问题解决办法:1.先看看你的D:\mirserver\mud2\DBSrv200\FDB\和D:\mir......
  • PID小车用python代码写
    importtimeimportRPi.GPIOasGPIO#设置GPIO模式GPIO.setmode(GPIO.BOARD)#定义电机引脚Motor1A=16Motor1B=18Motor2A=22Motor2B=40#设置引脚为输出模式GPIO.setup(Motor1A,GPIO.OUT)GPIO.setup(Motor1B,GPIO.OUT)GPIO.setup(Motor2A,GPIO.OUT)GPI......
  • 聪明办法学python chap 6字符
    聪明办法学pythonchap6字符四种引号:单引号,双引号区分不大两种引号可以在打印中打印出引号;三引号:写多好,注释换行号\转义字符\n代表换行也可以在多行print时打\来排除换行保持美观双引号\""reprandprint:输出看起来一样,实际却不一样repr可以识别转义的字符(......
  • 聪明办法学Python Task06&Task07
    定义函数  1函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()        2任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数        3函数内容以冒号 : 起始,并且缩进        4return[表达......
  • 【python笔记】contextlib,自定义with语句
    参考书籍:《深度学习入门——自制框架》[日]斋藤康毅步骤18.5使用with语句切换with语法python中的with语句,用于自动进行后处理。如文件读写:withopen('sample.txt','w')asf:f.write('hellosb!')这段代码等价于f=open('sample.txt','w')f.write('hellosb!&......
  • 聪明办法学python chap5循环
    聪明办法学pythonchap5循环for循环:重复执行特定范围的循环,知道已知循环次数可以用forfor_inrange()左闭右开区间range(起始默认为0,终止,步长默认为1)while循环:不知道循环什么时候停下来跳出循环:break:跳出循环continue:跳出本次循环;进入下一次循环......
  • 聪明办法学Python Task06&Task07
    循环LOOPfor循环在知道循环次数的情况下forxinrange(m,n):!!!注意:1.range(m,n)中包含x,不包含y(前闭后开);​ 2.省略第一个参数时,默认起始范围是0;​ 3.当添加第三个参数时:​ 第三个参数代表“步长”​ 如:foriinrange(0,10,2):print(i)输......
  • 第四次python学习笔记
    循环结构:1.while循环:用法:while条件:条件成立重复执行的代码1条件成立重复执行的代码2......示例一:计算1-100累加和分析:1-100的累加和,即1+2+3+4+….,即前两个数字的相加结果+下一个数字(前一个数字+1)。 i=1num =0......