【20210121】Python基础 03Python基础数据类型(数字类型,字符串类型)

03 Python基础语法

重点是:基础数据类型
在这里插入图片描述

1.几个概念

表达式

• 定义:产生或计算新数据值的代码片段称为表达式。表达式一般由数据和操作符等构成。
• 特点:
  表达式一般仅仅用于计算一些结果,不会对程序产生实质性的影响
  如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出。

语句

• 定义:在代码中,能够完整表达某个意思、操作或者逻辑的最短代码,被称为语句。(比如,赋值语句,分支语句,循环语句等)
• 特点语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果。

程序(program)

• 定义:程序就是由一条一条的语句和一条一条的表达式构成的。

代码块

• 定义:为完成某特定功能而联系在一起的一组语句构成一个代码块。有判断、循环、函数、类等各种代码块。代码块的首行通常以关键字开始,以冒号(: )结束。
在这里插入图片描述
• 特点:执行的话,都会执行,不执行的话,一个也不会执行。

函数(function)

• 定义:函数就是一种语句,函数专门用来完成特定的功能
  eg. print()函数的功能是打印输出。input()函数的功能是用来获取用户输入,返回值为字符换。
• 语法形式:形如xxx()
• 函数的分类:
  内置函数【Python自带的函数】:或者内建(built in)函数,就是由语法规定存在的函数,这些函数,包含在编译器的运行时库中,程序员不比单独书写代码实现它,只需要调用既可。比如:
  print()输出函数:def print(self, *args, sep=’ ‘, end=’/n’, file=None)
   *sep → 分隔符符号,在值之间插入的字符串,默认为空格。
   *end → 字符串追加在最后一个值之后, 默认为换行符\n。 如果设置end=’ ', 则可以不换行,让print在一行内连续打印 。
  input()输入函数:
  自定义函数【自己创建的函数】: 由程序员自主的创建的函数 当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数。
• 函数的2个要素:
  ①参数
  ②返回值
*pass语句
pass语包是占位语句,它什么都不做,只是为了保证语法的正确性而写。
在这里插入图片描述

2.Python 注释

• 注释的作用:注释有说明/帮助的性质,增加代码的可读性。
单行注释
  Python中以符号#为单行注释的开始,从它往后到本行的末尾,都是注释内容。
快捷键:CTRL+/
*IDLE里面是选中内容后,CTRL+【/】(取消缩进/增加缩进)

3.标识符

python语言的组成:
关键字、标识符、注释、变量和数值、运算符、语句、函数、序列、类

关键字(保留字)(Keyword)

• python一些具有特殊功能的标识符,这就是所谓的关键字(保留字)。是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符。
在这里插入图片描述

标识符概念

• 标识符的定义:开发人员在程序中自定义的一些符号和名称。标识符是自己定义的,如变量名 、函数名等。
• 组成:由26个英文字母大小写,数字 0-9,符号 _$
• 标识符的命名规则:
①标识符中可以包含大小字母(标识符对大小写敏感)、数字、下划线、汉字等,但是不能使用数字开头 例如:name;name_1 ;_name1 ;1name(不行)
②Python中不能使用关键字(保留字)作为标识符。如果使用了保留字作为标识符,解释器会提示“Invalid syntax”的错误信息。
• 命名方式
①驼峰命名法
②小驼峰式命名法: 第一个单词以小写字母开始;第二个单词的首字母大写,例如,myName
③大驼峰式命名法: 每一个单字的首字母都采用大写字母,例如,FirstName
④下划线命名法:用下划线_来连接所有的单词,例如,get_url

4.变量&赋值

• 变量的定义:变量是保存和表示数据值的一种语法元素。
• 变量的创建:变量是计算机内存中的一块区域,存储规定范围内的值,值可以改变。
在这里插入图片描述
• 赋值语句:<变量>=<表达式>
  注意:等号“=”表示赋值。双等号“==”表示值相等的判断,判断后的结果是True或False,分别对应值相当或不等。
• 同步赋值语句:<变量1>,…,<变量N>=<表达式1>,…,<表达式N>
  作用:同时给多个变量赋值;② 互换变量的值。

5.基本数据类型

Python3 中有六个标准的数据类型:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
可变与不可变数据类型,就是说元素能不能动态增加或删除

数字类型(numbers)

①整数(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。
②浮点数(floating) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 10^2 = 250)
③复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

数字类型的转换

  • int(x) 将x转换为一个整数。

    float(x) 将x转换到一个浮点数。

    complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

    complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

• 数字类型的转换中,注意:
在这里插入图片描述
*int()无法转换引号内非整数类型的字符串:in(‘1’)可以转换成1;int(‘a’)无法转换

布尔值和空值

布尔: 只有2个值。一个是True,一个是False。
None常量:只有1个数值。就是None,也就是空值。
*None 和 Null 的区别
区别一:None 和 Null 是不同的数据类型
None值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。可以将None赋值给任何变量,也可以给None值变量赋值。Null是字符串类型
相同点:判断的时候均是False
区别二:None 和 Null 的属性不同

6.字符串类型及格式化

字符串的定义:字符串是字符的序列表示。

字符串的索引

• 定义:对字符串中某个字符的检索称为索引。
• 索引的使用方式:<字符串或字符串的变量>[序号]
• 字符串包括2种序号体系:
 正向递增序号:最左侧字符序号为0,向右依次递增
 反向递减序号:最右侧字符序号为-1,向左依次递减
在这里插入图片描述

字符串切片

• 定义:对字符串中某个子串或区间的检索,称为切片。
*在内存中,数据是连续存储的数据类型,就可以切片。
• 切片的使用方式:<字符串或字符串变量>[N:M:step]
*N默认为0,M默认取到最后。
• 步长(step):N和M相隔的距离,例如[0,6,2],取到的值就是0,2,4位置上对应的元素。
*步长默认是1(从左往右,正向),可以是负数(从右往左,反向)。步长的正负号决定了“切取方向”。
*步长计算公式:当前索引+ 步长= 下一个索引
左闭右开(左取右不取 左右空取到头)
在这里插入图片描述
拓展:
①开平方
在这里插入图片描述
②负数取余
在这里插入图片描述

格式化字符串

格式化:初始化
格式化字符串:将字符串不可改变的属性格式化,然后改变其内容
• 第一种格式化字符串 拼串
• 第二种格式化字符串 参数传递
• 第三种格式化字符串 占位符
 %s 字符串占位
 %f 浮点数占位
 %d 整数占位
在这里插入图片描述

• 第四种格式化字符串 f’{变量}’
• format()格式化方法:<模板字符串>.format(<逗号分隔的参数>)
*模板字符串是一个由字符串和槽组成的字符串,用来控制字符串和变量的显示效果。
*如果槽的数量和变量数量不一致,会出现IndexError的错误。
• format()方法的格式控制
在这里插入图片描述

字符串的其他操作(常用的函数方法):

• len() 字符串的长度

>>>len("Python is an excellent language.")
32

• max() 最大值
min() 最小值

#返回字符串中的最大值
>>> a = "ax"
>>> b = "bx"
>>> c = "ay"
>>> max(a)
'x'
>>> max(a) > max(b)
False
>>> max(a) > max(c)
False

注意:
①max()函数会比较字符串中各字符的ascii码的最大值,并返回对应的字符
②在比较两个字符串的最大值时,先比较两个字符串的第一个字符的大小,当第一个字符相同时,才会比较第二个字符。
③min()函数用法同上。
• chr() 返回Unicode编码x对应的字符
ord() 返回单字符x表示的Unicode编码
• str.split(sep = None) 分割字符串。按指定字符sep分割字符串str之后,返回一个列表。省略sep默认以空格分隔。

>>>"Python is an excellent language.".split()
['Python', 'is', 'an', 'excellent', 'language.']
>>>"Python is an excellent language.".split('an')
['Python is ', ' excellent l', 'guage.']

str.partition() 也是一个分割字符串,返回3个元组

>>> s = "The people's Republic of China"
>>> s.partition(" ") #字符串s中含有四个空格,在第一个空格处将字符串分割
('The', ' ', "people's Republic of China")
>>> s.partition("o") #字符串s中含有两个"o",在第一个"o"处将字符串分割
('The pe', 'o', "ple's Republic of China")
>>> 

• str.join(iter) 将iter变量的每一个元素后增加一个str字符串

>>>" ".join(PYTHON)
'P Y T H O N'
>>>",".join(123456)
'1,2,3,4,5,6'

【关于str.split()和str.join():
str.split()默认按照空格分隔字符串;str.join()相当于把“str”(间隔的填充物,可以是空格,逗号等等)填充入join()括号内的字符串中每个元素的间隔里。】
• str.strip(chars) 左右两边去空格 s.lstrip() 去左边空格 s.rstrip() 去右边空格
• str.upper() 全部字符大写

>>>"Python".upper()
'PYTHON'

str.lower() 全部字符小写

>>>"Python".lower()
'python'

str.isupper() 判断是不是大写
str.islower() 判断是不是小写
•str. replace(old,new) 返回字符串str的副本,所有old子串被替换成new。

>>>"Python is an excellent language.".replace('Python','C')
'C is an excellent language.'

• str.find() 字符串中查找指定字符在字符串出现的第一次位置
str.index(str, beg=0, end=len(string)) 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。
  *str – 指定检索的字符串
  *beg – 开始索引,默认为0。
  *end – 结束索引,默认为字符串的长度。
• str.strip(chars) 从字符串str中去掉在其左侧和右侧chars中列出的字符。

>>>"    ==Python==    ".strip(' ')
'==Python=='

str.lstrip() 去左边空格
str.rstrip() 去右边空格
• str.center(width,fillchar) 字符串居中函数,fillchar参数可选。返回长度为width的字符串,其中str处于新字符串的中心位置,两侧新增字符用fillchar填充。当width小于字符长度时,返回str;fillchar是单个字符。

>>>"Python".center(20,'=')
'=======Python=======' # 'python'长度为6,左右各填充(20-6)/2=7个字符,即7个等号“=”。

• str.count(sub) 返回字符串中sub的次数,sub是一个字符串。

>>>"Python is an excellent language.".count('a')
3

7.Pycharm中的debug

断点调试,英文 breakpoint。
断点调试其实就是在程序自动运行的过程中,你在代码某一处打上了断点,当程序跑到你设置的断点位置处,则会中断下来,此时你可以看到之前运行过的所有程序变量。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

课后练习

第一题:a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现

# 方法1:互换变量a,b的值
a,b = 6,8
a,b = b,a
# 方法2:借用中间变量
a, b = 6, 8
print(a,b)
c = a   #将a赋值给c,c保存a的值
a = b   #将b赋值给a, a的值被替换成b
b = c   #将c赋值给b.完成ab值的互换
print(a,b)

第二题:设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入 打印出字符串长度 使用切片逆序打印出字符串

#这个是自己写的:
    a = input("请输入长度低于31的字符串:")
    b = len(a)
    if b < 31:
        a = a[::-1]
        print(a)
    else:
        print("你输入的字符串长度为:{},字符串长度不符合要求,请重新输入。".format(b))
#逆序,在别的同学那里还看到了用list.reverse()的写法。

流程:

输入str
计算str长度
len(str) <= 31
打印字符串的逆序
(length>31)
打印重新输入的提示

*程序异常的处理:

try:
	<语句1>
except:
	<语句1>

第三题:要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
用户名长度6-20,用户名必须以字母开头
密码长度至少6位,不能为纯数字,不能有空格*

# 第一次自己写的:
# 步骤是:s1.写好输入user和code,s2.写好每个单独的条件判断,s3.为了实现依次判断,把条件套起来,s4.为了让用户可以不断重新输入,加入while循环,并用continue和break控制
# try语句是为了规避i = int(i)中的错误。
# 反正不知道就怎么成功了,密码也没法输入中文,用户名有中文应该没事。
try:
    while True:
        user = input("请输入用户名(用户名长度6-20,用户名必须以字母开头):")
        code = input("请输入密码(密码至少6位,不能为纯数字,不能有空格):")
        top = user[0]
        if 6 <= len(user) <=20:
            if "a" <= top <= "z" or "A" <= top <= "Z":
                if len(code) >= 6:
                    m = 0
                    while m < 6:
                        for i in code:
                            i = int(i)
                            if type(i) == type(1):
                                    m += 1
                    else:
                        if m == 6:
                            print("密码不能为纯数字")
                            continue
                        else:
                            for i in code:
                                if i == ' ':
                                    print("密码中不能有空格")
                                    continue
                                else:
                                    break
                else:
                    print("密码至少应为6位")
                    continue
            else:
                print("用户名必须以字母开头")
                continue
        else:
            print("用户名长度不符合要求")
            continue
except:
    pass
print("账户创建成功。您的用户名为{},密码是{}".format(user,code))
# 第二次,看了一下别的同学的: 
# 但是密码如果有空格,最后一句print("账号创建成功。您的用户名为{},密码是{}".format(user, code))不知道为什么还是会执行。
while True:
    user = input("请输入用户名(用户名长度6-20,用户名必须以字母开头):")
    code = input("请输入密码(密码至少6位,不能为纯数字,不能有空格):")
    top = user[0]
    if 6 <= len(user) <= 20:
        if top.isalpha():
            if len(code) >= 6:
                if code.isdigit():
                    print('密码不能为纯数字 ')
                else:
                    for i in code:
                        if i.isspace():
                            print("密码中不能有空格")
                    else:
                        break
            else:
                print("密码至少应为6位")
        else:
            print("用户名必须以字母开头")
    else:
        print("用户名长度不符合要求")
print("账号创建成功。您的用户名为{},密码是{}".format(user, code))     
# 第三次,接着抄作业。改进了判断空格的方式:
# 来源是:https://blog.csdn.net/weixin_52671417/article/details/112807239(侞㕃)
while True:
    user = input("请输入用户名(用户名长度6-20,用户名必须以字母开头):")
    code = input("请输入密码(密码至少6位,不能为纯数字,不能有空格):")
    top = user[0]
    if 6 <= len(user) <= 20:
        if top.isalpha():	# 相当于top.isalpha() == True
            if len(code) >= 6:
                if code.isdigit():  # 相当于 if code.isdigit() == True
                    print('密码不能为纯数字 ')
                else:
                    if " " in code:
                        print('密码中不能有空格')
                    else:
                        print("账号创建成功。您的用户名为{},密码是{}".format(user, code))
                        break
            else:
                print("密码至少应为6位")
        else:
            print("用户名必须以字母开头")
    else:
        print("用户名长度不符合要求")
#第四次,突然发现我是憨憨本憨,我为什么不用elif?
#if...elif...语句(多向判断),本身就是从上往下依次判断,不需要用if嵌套。if不满足,则再看elif是否满足。
#if嵌套式在“基础条件”上,再附加一个“额外条件”。这道题不需要搞这么复杂,@.@看的头晕。
#参考:https://blog.csdn.net/weixin_40679492/article/details/112890671(陈有桂)
while True:
    user = input('请输入用户名:')
    code = input('请输入密码:')
    if len(user) < 6:
        print('用户名错误:用户名长度需在6位以上')
    elif not user[0].isalpha():	#相当于 user[0].isalpha() == False
        print('用户名错误:用户名必须以字母开头')
    elif len(code) < 6:
        print('密码错误:密码长度至少6位')
    elif code.isdigit():	#相当于code.isdigit() == True
        print('密码错误:不能为纯数字')
    elif " " in code:
        print('密码错误:不能有空格')
    else:
        print('账户创建成功。您的用户名是{},密码是{}'.format(user,code))
        break

另外,做第三题的时候,如果elif统统写成if的话,就会一次性把错误提示出来,而不是依次判断。不加上while语句,用户就不能重新输入一遍了!Σ(っ °Д °;)っ【我自己试过,但是代码删掉了,就用一下另一个同学的图】
来源:https://blog.csdn.net/happiness121/article/details/112905056(不断蜕变…青春)
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值