C/C++选手初学Python可能遇到的问题

        对于以C/C++入门的人(比如我)来说,刚上手Python并不是那么适应。比如我对Python的第一印象就是:“这玩意怎么长这样??”

        我在这里对于CP之间的一些不同点做一个总结,如果有说的不对的地方欢迎指正!

目录

1.记得给变量初始化 

2.在需要的时候转换变量类型

3.CP字符串

3.1字符访问(下标)

3.2 substr()与[:]

3.3其他


1.记得给变量初始化 

        C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,C++的变量是不需要初始化的(编译器已经帮你完成了)。

        Python中虽然也有基本类型,但是Python的变量只是变量,并不具有特定的类型,它是可以“随时根据需求转换的”,并且Python的变量需要初始化,也就是说,下面这行代码是错误的。

a
a = 1
print(a)

在PyCharm运行之后结果如下:

        所以在创建你的Python变量之前请记得给它初始化。

2.在需要的时候转换变量类型

        就像前文说的Python的变量并不具有特定的类型,也就是说即使你申明了一个整型变量,它也可能在后续的操作中变成其他类型的变量(感觉这样的说法对于py来说并不准确,但是对c++人来理解是这样的),下边就是一个例子:

a = 2
a /= 2
print(a)

运行结果:

        可以看到我们本来申明为整型的变量在经过 “  /=  ”  操作后变成了一个浮点型, 如果想保持整型就需要使用  “  //=  ”。

        一些操作是只有特定类型才能执行的,所以记得在需要的时候转化变量类型,你可以执行这样的操作:

#此处省略......
a = int(a)
#一样......

3.CP字符串

        C++中字符串可以由多种类型表示char[]、char*、string,在对其赋值时都是用  " "  双引号。

        Python中单引号和双引号都是可以的,并且Python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。就是说可以这样写:

str = """
生活不能等待别人来安排,要自己去争取和奋斗;
而不论其结果是喜是悲,但可以慰藉的是,你总不枉在这世界上活了一场。\n有了这样的认识,你就会珍重生活,而不会玩世不恭;
同时,也会给人自身注入一种强大的内在力量。

"""
print(str)

运行结果:

下边以C++的string对象进行类比

3.1字符访问(下标)

        C++和Python都可以通过下标直接访问字符串中的单个字符,不同的是Python的[]用法并不单一,除了访问单个字符外还可以执行很多操作,这个后边再说。

        Python的下标可以是负数,也就是说str[-1]是允许的,它代表字符串从尾到头的第一个元素,正数情况二者相同。

3.2 substr()与[:]

        C++中药取得一个字符串的子串我们一般使用 substr() 函数 

        Python则可以直接用方括号加冒号[:]实现这样的操作

        比如给定一字符串“Hello world”我们可以分别用两个语言进行如下操作:

Python:

str="Hello world"

print(str[0:5])#从[0]截到[4]
print(str[-11:-6])#从[-11]截到[-7]
#只有头下标/尾下标的情况
print(str[:5])#尾下标是5,从[0]开始截取到[4]
print(str[6:])#头下标是6,从[6]开始向后截取
'''
注:[]中的头尾下标是左闭右开的[)
'''

运行结果:

 

 C++:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str = "Hello world";
    cout << str.substr(0,5) << endl    /*Hello*/
         << str.substr(6,5);           /*world*/
    return 0;
}

3.3其他

        除此之外两种语言的string对象都差不多:它们都有很多内置函数大大简化了C语言中的一些字符串算法;你可以对字符串进行+=的操作来连接两个字符串;不同的是Python的字符串可以进行 * 运算。

        Python的输入一般用input(),这个函数默认的数据类型是string,所以还是第一条注意你需要的数据类型。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值