云计算百科
云计算领域专业知识百科平台

python语法入门、基本数据类型、程序控制语句与组合数据类型

一、语法

代码执行是严格从上到下的顺序​​,缩进规则极其严格​​,开头的空格数量不能随意增减,因为​​空格在Python中代表代码逻辑层级​​,多一个或少一个空格都会导致程序无法运行。​

1.1输出函数print()

print()输出函数​​和​​input()输入函数是两个最基础的函数​​​​。这两个函数分别负责信息的输出和接收,是编程中最常用的基础功能。

  • print函数的三种基础用法​​:
  • (1)​​当参数是字符串时​​,比如用单引号或双引号包裹的内容,print会原样输出。这里要特别注意,​​代码中的符号必须是英文格式​​,比如引号、括号等,中文符号会报错。

    (2)​​参数为变量名​​的情况,比如a=3、b=15、c=a+b,此时print(c)会输出变量c的值18。print函数会先计算变量内容再输出。

    (3)参数为表达式​​时,比如a+b-7,print会先计算表达式结果(这里是11)再输出。​​核心规律​​是:print总会先计算括号内的内容(无论是变量、表达式还是其他),再输出最终结果。

    (4)参数为多个参数时,参数间会​​自动添加空格​​分隔。比如print(a, b)会把变量a和b的值用空格隔开输出。

    (5)输出末尾设置​​end参数​​,它默认值是\\n(换行符),所以每次print输出后会自动换行。如果想改变输出后的行为,比如让内容不换行或在末尾加其他字符,可以修改end参数的值。连接输出​​通过设置end='##',可以让两个print语句的输出用"##"连接起来;若设为end=''(空字符串),则直接拼接输出内容。

    (6)参数为函数:先计算函数的结果,再将函数结果输出。其中dir(__builtins__)能列出当前Python环境中所有可用的内置函数。

    ​​1.2输入函数input()​

    与print函数相反,是用来接收用户输入信息的。比如需要获取用户性别、年龄等信息时就要用到它。input函数的基本用法很简单:直接写input(),括号里可以加上提示信息,比如input("请输入账号:")。这时程序会暂停,等待用户输入内容。​​提示信息​​会显示在终端上引导用户正确输入。通过input()函数获取的用户输入,​​无论输入数字还是文字,返回的都是字符串类型​​。

    1.3元素的命名

  • 变量名的命名需要遵守​​四条规则​​。
  • (1)只能用字母(a-z/A-Z)、数字(0-9)、下划线或汉字​​来组合命名。特别注意,像@、$、%这些符号都是​​绝对不允许​​出现的,系统会直接报错提示语法错误。

    (2)​​变量名不能以数字开头​​,比如"3myname"会直接报错。​​

    (3)变量名不能和保留字相同,保留字是python内已被使用的具有特定功能的名称,如false、if等。比如写"False=11"就会报错。

    (4)变量名最好别用Python内置函数名​​(比如list/dict等),虽然语法允许,但容易引发混淆。例如​​把内置函数名(如print)用作变量名是允许的​​,但这样做会​​覆盖原有函数功能​​。比如先写print=10,再写print(1+1)就会报错——因为此时print已经变成普通变量,不再是函数了。虽然Python允许这种操作,但会​​导致内置函数失效​​,所以编程时要​​避免使用内置函数名作为变量名​​。这种错误不会立即显现,而是在后续调用被覆盖的函数时才暴露,属于典型的"埋雷"行为。

    1.4赋值语句

    (1)Python严格区分大小写,所以大写的ELSE和小写的else是不同的标识符,不会冲突。​​变量名不能与关键字完全相同​​,但通过大小写变化可以绕过这一限制。

    (2)关于变量值的覆盖​​:当给变量先后赋不同的值时,后赋的值会完全覆盖之前的值,就像内存中的存储空间被新内容替换一样。

    (3)​​多重赋值​​的用法:可以用a,b,c,d = 10,12,13,15这样的形式,​​同时给多个变量赋值​​,数值会按顺序对应分配给各个变量。

    二、基本数据类型

    ​​每种数据类型都有专属的操作方法​​,比如数值型擅长加减乘除,字符串型专精连接和切片操作,而矩阵则侧重求逆等运算。

    ​​基本数据类型就两种​​:​​数值类型​​和​​字符串类型​​。

    2.1数值型

    1)​​整型​​(如123);

    2)​​浮点型​​(带小数点的数);

    3)复数(AI领域很少用,主要在机械/电学等领域)。重点掌握前两种就行。

    整型的运算很直观,支持​​加减乘除、整除、取余、幂运算​​等基础操作。就像小学数学里的整数计算,只是现在要用代码表达出来。

    增强赋值运算符​​是基础运算符和赋值语句的结合体。比如a += 3完全等价于a = a + 3,这种写法不仅更简洁,还能提高代码效率。常见的增强赋值运算符包括+=、-=、*=、/=、//=、%=和​**​=。

    2.2字符串

    字符串索引:从左往右从0开始计数,从右往左是从-1开始计数。用索引可以获取字符串中的字符,如a='python',a[2]='t'。获取多个字符切片,要使用两个参数。如a[2:5]='tho',切片只包含左边的索引的字符,不包含右边索引。

    其实使用两个参数包含了第三个参数,只不过默认步长(第三个参数)为1​​。当尝试用[-1:-6]反向切片时,由于默认步长是1(从左往右),导致无法获取有效结果。​​解决方法​​是显式设置步长为-1,即写成[-1:-6:-1],这样就能实现从右往左的切片。

    [起始:结束:步长],其中​​步长决定了切片方向​​,正数从左往右,负数从右往左。

     ​​字符串操作​:连接用简单的(+)就可以连接两个字符串,如a='python'+'人工智能'。字符串复制可以用(*)来解决,如a='python'*倍数

    字符串函数:len(参数)用来获取字符串长度,如len(a)。

    字符串方法:

    (1)count()方法​​:用来统计字符串中某个子串出现的次数。比如代码a.count("3500")会在字符串a中查找"3500"出现的次数,示例中返回结果是3,说明"3500"出现了三次。

    (2)replace()方法​​:用于替换字符串中的内容,参数一是要被替换的子串,参数二是新内容。比如a.replace("3500","4000")会把所有"3500"替换成"4000"。

    (3)​​strip()方法​​:专门处理字符串​​开头和结尾​​的字符,比如去掉开头和结尾的"#"号。strip​​只处理首尾字符​​,如果字符串中间有相同字符不会被删除。另外,字符串末尾的空格也会被strip默认清除。​​带参数时​​会删除字符串开头指定的内容,​​不带参数​​则默认删除首尾的空格、换行符和制表符等空白字符。

    (4)split():能​​按指定分隔符​​把字符串拆分成列表。比如用"#"分隔字符串"a#b#c",就会得到['a','b','c']这个列表。

    (5)join()方法:会在​​每个字符之间插入指定字符串​​。比如用"-"连接列表元素,就能把['a','b']变成"a-b"。这些方法组合使用可以灵活处理各种字符串操作需求。

    ​​(6)format方法​​:"字符{}字符{}…".format(参数1,参数2)​​

    带花括号的引号内容仍是字符串​​,不是字典。这些花括号是"槽位",会被format()方法的参数依次填充。比如第一个参数会替换第一个花括号,第二个参数替换第二个,以此类推。

    ​​转义字符​​:就是那些会改变原本含义的特殊字符,比如键盘上的制表符(Tab键)、换行符、引号等。这些字符在字符串中无法直接显示,需要用反斜杠(\\)加特定字母来表示。比如"\\n"代表换行,"\\t"代表制表符(相当于多个空格)。​​在文件路径中使用反斜杠时要小心​​,因为像"\\U"这样的组合会被当作转义字符处理,可能导致路径错误,因此要在路径前加上r表示路径。

    2.3​​数据类型检测​​

    处理数据前要先明确类型,用type()函数可以快速判断。比如字符串会返回class 'str',整数返回class 'int',浮点数则是class 'float'。

    ​​强制类型转换:常用的转换函数包括:

    • ​​int()​​:把数据转为整数(如字符串"31415"→整数31415)
    • ​​float()​​:转为浮点数
    • ​​str()​​:转为字符串

    ​​字符串类型转换​​有个需要注意的点:如果一个字符串看起来像浮点数(比如"3.14"),你不能直接把它转成整数(int)。​​必须分两步走​​:先转成浮点数(float),再转成整数。

    ​​多行字符串处理​​:当文本包含多个段落时,直接写成字符串可能会遇到格式问题。就像你看到的,颜色显示都不对,这说明系统没正确识别这种多行结构。需要特殊处理才能保持原有段落格式。单引号或双引号​​只能包裹单行字符串,遇到多行内容时就会失效。这时候应该改用​​三引号(三个单引号或双引号)​​来包裹多行字符串,这样就能正确识别换行位置。注释是完全不会被执行的说明文字,而三引号字符串是真实存在的字符串对象,只是没被使用而已。当遇到特别长的代码行时,可以用​​反斜杠(\\)​​来换行拆分,这样既保持代码功能不变,又能提升可读性。

    三、程序控制语句

    3.1条件判断语句​​

    (1)​​if语句:​​缩进非常重要​​,通常用四个空格来表示代码块,缩进的代码都属于if语句的执行部分。​​缩进决定了代码的逻辑结构​​,多行代码的缩进表示它们都属于同一个条件判断块。

    ​​条件判断​​有七种常见形式,比如用​​双等号(==)判断是否相等​​,返回True或False。还有大于(>)、大于等于(>=)等比较运算符。

    ​​当条件表达式是a*2这样的计算时,​​只要结果不是0或None​​,就视为True,触发条件执行​​,只有结果为0或None才会跳过后续代码。

    (2)​​if-else条件语句​​:​​条件判断后跟一个代码块​​,如果条件为true就执行这个代码块,否则执行else后面的代码块。

    (3)​​​​if-elif-else的形式​​:处理多个条件​​时可用。它会按顺序检查每个条件,第一个满足的就执行对应的代码块,不满足就进行下一次判断elif,都不满足就执行else部分。

    (4)"与(and)"运算、"或(or)"运算:and表示前后条件要同时满足才为True,or表示前后条件满足一个就为True。在多个条件判断时,要用括号标明哪些条件先进行运算。

    (5)​​if-else的简洁写法​​:表达式1 if 条件 else 表达式2。这种单行写法相当于把常规的if-else结构压缩成一行,先判断条件,为真则返回表达式1,否则返回表达式2。就像例子中比较a和b的大小,可以直接写成a if a>b else b来获取较大值。

    3.2​​循环语句​​

    (1)​​for循环:"for 变量 in 循环内容:"​​,后面跟带缩进的代码块。

    ​​循环次数完全由循环内容的数量决定​​,比如有几个元素就会循环几次,每次循环都会自动将当前元素赋值给循环变量。

    ​​range函数​​解决了数字循环的问题。因为数字不像字符串那样可以拆分成单个字符,所以需要range函数来​​生成一个可迭代的数字序列​​。比如想循环n次,用range(n)就能生成0到n-1的序列供循环使用。

    ​​range函数​​不仅能生成简单的数字序列,还能通过参数控制范围和步长:

    • ​​单参数​​(如range(1000)):生成从0到999的序列
    • ​​双参数​​(如range(4,8)):生成从4到7(​​不包含8​​)的序列
    • ​​三参数​​(如range(4,8,2)):从4开始,步长为2,生成4和6(跳过5和7)

    for循环复合写法:B = [a*2 for a in range(5)]这行代码其实等效于:先创建一个空列表B,然后用for循环遍历range(5),每次循环把a*2的结果用append()方法添加到列表B中。执行后得到的B列表会包含[0,2,4,6,8]这些元素。

    (2)while循环:只要条件满足(如4>=3为True),就会反复执行代码块,执行完又返回检查条件。​​关键点​​在于这个循环会持续到条件不满足为止,如果条件永远为真(比如4>=3),就会陷入​​死循环​​。

    (3)​​嵌套循环:​​缩进决定了代码块的归属​​。外层循环的每次迭代,必须​​完整执行内层循环的所有内容​​后,外层循环的变量才会更新。

    (4)​​break、continue关键字​​的作用:break一旦满足条件是直接终止整个循环​​,而​​continue只是跳过当前这次循环​​,相当于"这轮我先不玩了",但循环还会继续下一轮。

    3.3​​异常处理语句​​

    当我们用input()接收用户输入并强制转为整数时,如果用户不小心输入了字母程序就会报错ValueError(值错误)。

    ​​try-except异常处理结构​​:当try代码块出现异常时,系统会自动跳转到except代码块执行。比如可以用它来拦截用户输入的异常值。

    但这里有个​​易忽略的细节​​:输入0也会被判定为"不正确"。这说明代码的验证逻辑可能存在漏洞,需要进一步检查条件判断语句是否合理。这种情况在编程中很常见,提醒我们要特别注意边界条件的测试。

    当程序遇到输入错误时,​​不能简单地机械报错​​,而应该根据具体错误类型给出人性化提示。比如输入0会触发​​ZeroDivisionError​​(零除错误),输入非数字会触发​​ValueError​​(值错误)。通过​​捕获特定异常类型​​,可以针对性地提示"数字不能为0"或"请输入有效数字",这样比笼统的"输入不正确"更清晰易懂。

    ​四、组合数据类型​​

    在基础阶段,我们会重点学习三种组合数据类型:​​列表、元组和字典​​。

    4.1​​列表

    用中括号[]表示,里面能装各种类型的数据。数值(比如1、2)、字符串(比如"python")、甚至其他列表、元组、字典都能往里塞。

    列表元素用逗号隔开,每个元素可以是完全不同的数据类型。这种特性让列表成为处理复杂数据的利器,比如电商系统中用户的名字(字符串)、年龄(数值)、购物车(列表)就能统一管理。

    ​​索引从0开始​​,a[0]取第一个元素。判断元素个数要​​看逗号分隔​​,遇到子列表时,无论它内部多复杂,都视为一个独立元素。​​负数索引​​表示从后往前数,-1是最后一个元素。

    ​​切片操作​​和字符串类似,语法是[start:end],这些规则和字符串切片完全一致。

    在​​嵌套列表​​操作中,需要分步操作:先通过主列表索引定位到子列表,再通过子列表索引定位具体元素。调试模式下可以​​逐层展开​​列表结构,直观看到每个子列表的内容。比如要获取s1[2][4]的值,必须先拿到s1[2]这个子列表,才能继续索引[4]。

    列表类型函数:list()可以将类型强制转换为列表。

    列表方法:

    (1)append():在列表最后增加一个元素

    (2)clear():清除列表中所有元素,括号内无需添加参数。

     (3)​copy():​​会​​真正创建新内存空间​​,把原列表内容完整复制过去,此时修改原列表不会影响新列表。直接赋值(lst2 = lst)​​只是给​​同一块内存空间起了新名字​​(如lst2),本质上lst和lst2是同一个对象。所以用clear()清空其中一个,另一个也会同步清空。

    (4)​​count()​​:统计元素出现次数,比如统计"奶茶"在列表里出现了3次,就返回数字3

    (5)​​index()​​:查找元素位置,比如找"冰激凌"的下标是2(从0开始数)

    (6)​​insert():它在指定位置插入元素,其他元素会自动后移。如a.insert(2,"abc")就是在索引2的位置加入元素"abc"。

    (7)​​pop():是按索引删除元素,比如pop(2)就是删除下标2的元素。​

    (8)remove():​​是删除​​第一个匹配值​​,remove("大盘鸡")只删除第一个"大盘鸡",后面重复的不会删。

    (9)​​reverse():​​直接翻转整个列表顺序。如下图翻转后的信息不会返回给b。

    (10)sort():中文列表排序默认按拼音字母顺序​​。​​数字列表默认从小到大排序​​,但可以通过设置reverse=True参数改为从大到小排列。

    4.2元组

    元组使用圆括号()包裹元素​​。​​列表和元组的关键区别​​在于​​可变性​​。列表(list)用方括号表示,可以随意增删改元素;而元组(tuple)用圆括号表示,​​一旦创建就不可修改​​,包括不能删除、添加或反转元素。可用tuple()函数强制转换为元组。

    4.3字典

    没有序号,只能通过键来找值

    字典特别适合存储​​键值对形式的数据​​,比如用户信息这种结构化数据;而列表更适合存储​​同类型元素的集合​​。两者的核心区别在于:字典通过键快速访问值,列表则通过索引位置访问元素。字典特别适合管理这类​​关联性数据​​,每个键值对就是一个独立的数据单元。

    ​​字典和列表的最大区别​​在于字典是​​无序​​的,不能像列表那样通过索引号来获取元素,​​必须通过键来访问对应的值​​。

    dict()函数和list()、tuple()类似,都是​​强制类型转换函数​​,也可以用来​​创建空字典​​。比如a = dict()就会生成一个空字典。如果想往字典里添加内容,可以用a[键] = 值的方式。而列表添加元素是用append()方法,字典则是直接通过​​键赋值​​的方式,必须明确指定键和对应的值。

    ​​字典是通过键(key)来访问值(value)的​​,而不是像列表那样通过下标(index)。

    操作方法​​:

    (1)​​clear():直接清空整个字典内容。

    ​​(2)get():它接收两个参数,​​第一个参数是要查找的键​​,如果字典中存在这个键,就返回对应的值;​​如果键不存在​​,则返回第二个参数的值。比如dict.get('key1','default'),就是在字典里找'key1',找到返回其值,找不到就返回'default'。这个方法可以接受1-2个参数​​。单参数查不到返None,双参数查不到返默认值​​。

    (3)keys():会返回一个dict_keys对象​​。比如执行a = D.keys()后,变量a会包含字典D的所有键集合。这里要注意的是,​​dict_keys并不是普通的列表​​,而是字典键的动态视图,会随字典更新而变化。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » python语法入门、基本数据类型、程序控制语句与组合数据类型
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!