第三章 基本数据类型

news/2024/11/8 13:40:39/

文章目录

    • 第三章 基本数据类型
        • 3.1 数字类型
          • 3.1.1 整数类型
          • 3.1.2 浮点数类型
          • 3.1.3 复数类型
        • 3.2 数字类型的运算
          • 3.2.1 数值运算操作符
          • 3.2.2 数值运算函数
        • 3.3 字符串类型及格式化
          • 3.3.1 字符串的索引
          • 3.3.2 字符串的切片
          • 3.3.3 format()方法的基本使用
          • 3.3.4 format()方法的格式控制
        • 3.4 字符串类型的操作
          • 3.4.1 字符串操作符
          • 3.4.2 字符串处理函数
          • 3.4.3 字符串处理方法
        • 3.5 类型判断和类型问间转换
        • 3.6 实例解析——恺撒密码
        • 习题3
          • 一、选择题
          • 二、编程题

第三章 基本数据类型

3.1 数字类型

Python语言提供3种数字类型:整数类型、浮点数类型和复数类型,分别对应数学中的整数、实数和复数。

3.1.1 整数类型

整数类型有4中进制表示:十进制、二进制、八进制和十六进制。默认情况整数采用十进制,其他禁制需要增加引导符号。

不同进制的整数之间可以直接运算。

进制类型引导符号描述
十进制默认情况,例:1010,-1010
二进制0b或0B由字符0和1组成,例:0b1010,0B1010
八进制0o或0O由字符0到7组成,例:0o1010,0O1010
十六进制0x或0X由字符0到9、a到f或A到F组成,例:0x1010
3.1.2 浮点数类型

表示带有小数点及小数的数值。Python语言中的浮点数类型必须带有小数部分,小数部分可以是0.例如:1010是整数,1010.0是浮点数。

浮点数有2种表示方法:十进制形式的一般表示科学计数法表示。除十进制外,浮点数没有其他进制表示形式。

科学计数法使用字母e或者E作为幂的符号,以10为基数,含义如下:

<a>e<b> = a*10^b

Python浮点数类型的数值范围和小数精度受不同计算机系统的限制。除高精度科学计算外的绝大部分运算来说,浮点数类型的数值范围和小数精度足够可靠。

3.1.3 复数类型

复数类型表示数学中的复数。复数有一个基本单位元素j,叫作”虚数单位“。含有虚数单位的数被称为复数。

Python语言中,复数可以看作是二元有序实数对(a,b),表示:a+bj,其中a是实数部分,简称实部,b是虚数部分,简称虚部。虚数部分通过后缀”J“或者”j“来表示。需要注意,当b为1时,1不能省略,即1j表示复数,而j则表示Python程序中的一个变量。

复数类型中实部和虚部都是浮点类型,对于复数z,可以用z.real和z.imag分别获得它的实数部分和虚数部分

3.2 数字类型的运算

3.2.1 数值运算操作符
操作符描述
x + yx与y之和
x - yx与y之差
x * yx与y之积
x / yx与y之商
x // yx与y之整数商,即:不大于x与y之间商的最大整数
x % yx与y之商的余数,也被称为模运算
-xx的负值,即:x*(-1)
+xx本身
x ** yx的y次幂

数值运算可能改变结果的数据类型,类型的改变与运算符有关,有如下基本规则:

  1. 整数和浮点数混合运算,输出结果是浮点数
  2. 整数之间运算,产生结果类型与操作符相关,/运算的结果是浮点数
  3. 整数或浮点数与复数运算,输出结果是复数。
3.2.2 数值运算函数
函数描述
abs(x)x的绝对值
divmod(x,y)(x//,x%y),输出为二元组形式,也成为元组类型
pow(x,y)或pow(x,y,z)(x**y)%z,z表示该参数可以省略,幂运算
round(x)或round(x,d)对x四舍五入,保留d位小数。round(x)返回四舍五入的整数值
max(x1,x2,…xn)x1,x2…xn的最大值,n没有限定,可以任意数量
min(x1,x2,…xn)x1,x2…xn的最小值,n没有限定,可以任意数量

3.3 字符串类型及格式化

字符串是字符的序列表示,根据字符串的内容多少分为单行字符串和多行字符串。

单行字符串可以由一对单引号(')或双引号(")作为边界来表示,单引号和双引号作用相同。

多行字符串可以由一对三单引号(‘’')或三双引号(“”")作为边界来表示,两者作用相同。

Python语言转义符:\

例如:\n表示换行、\\表示反斜杠、\'表示单引号、\"表示双引号、\t表示制表符(TAB)等。

3.3.1 字符串的索引

对字符串中某个字符的检索被称为索引。索引的使用方式如下:

<字符串或字符串变量>[序号]

如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1。

反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。

3.3.2 字符串的切片

对字符串中某个字串或区间的检索称为切片。切片的使用方式如下:

<字符串或字符串变量>[N:M]

切片获取字符串从N到M(不包含M)的子字符串,其中N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。切片要求N和M都在字符串的索引区间,如果N大于等于M,则返回空字符串。如果N缺失,则默认将N设为0;如果M缺失,则默认表示字符串结尾。

3.3.3 format()方法的基本使用

字符串format()方法的基本使用格式如下:

<模板字符串>.format(<逗号分隔的参数>)

其中模板字符串是一个由字符串和槽组成的字符串,用来控制字符串和变量的显示效果。槽用大括号({})表示,对应format()方法中逗号分隔的参数。如果模板字符串有多个槽,且槽内没有指定序号,则按照槽出现的顺序分别对应format()方法中的不同参数,参数从0开始编号。

3.3.4 format()方法的格式控制

format()方法中模板字符串的槽除了包括参数序号,还可以包括格式控制信息。

{<参数序号>:<格式控制标记>}

其中格式控制标记用来控制参数显示时的格式。格式控制标记包括:

<填充><对齐><宽度><,><精度><类型>
引导符号用于填充单个字符<左对齐
>右对齐
^居中对齐
槽的设定输出宽度数字的千位分隔符,适用于整数和浮点数浮点数小数部分的精度或字符串的最大输出长度整数类型:b,c,d,o,x,X
浮点数类型:e,E,f,%

<填充>、<对齐><宽度>主要用于对显示格式的规范。

宽度指当前槽的设定输出字符宽度,如果该槽参数实际值比宽度设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则按照对齐指定方式在宽度内对齐,默认以空格字符补充。

对齐字段分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。

填充字段可以修改默认填充字符,填充字符只能有一个。

<.精度><类型>主要用于对数值本身的规范。

<.精度>由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。小数点可以理解为对数值的有效截断。

<类型>表示输出整数和浮点数类型的格式规则。

对于整数类型,输出格式包括6种:

  1. b:输出整数的二进制方式
  2. c:输出整数对应的Unicode字符
  3. d:输出整数的十进制方式
  4. o:输出整数的八进制方式
  5. x:输出整数的小写十六进制方式
  6. X:输出整数的大写十六进制方式

对于浮点数类型,输出格式包括4种:

  1. e:输出浮点数对应的小写字母e的指数形式
  2. E:输出浮点数对应的大写字母E的指数形式
  3. f:输出浮点数的标准浮点形式
  4. %:输出浮点数的百分形式

3.4 字符串类型的操作

3.4.1 字符串操作符
操作符描述
x + y连接两个字符串x与y
x * n或n * x复制n次字符串x
x in s如果x是s的子串,返回True,否则返回False
3.4.2 字符串处理函数
函数描述
len(x)返回字符串x的长度,也可返回其他组合数据类型的元素个数
str(x)返回任意类型x所对应的字符串形式
chr(x)返回Unicode编码x对应的单字符
ord(x)返回单字符x表示的Unicode编码
hex(x)返回整数x对应十六进制数的小写形式字符串
oct(x)返回整数x对应八进制数的小写形式字符串
3.4.3 字符串处理方法

方法也是一个函数,只是调用方式不同。

函数采用func(x)方式调用。

方法则采用< a >.func(x)形式调用即A.B()形式。以前导对象< a >为输入。

方法描述
str.lower()返回字符串str的副本,全部字符小写
str.supper()返回字符串str的副本,全部字符大写
str.split(sep=None)返回一个列表,由str根据sep被分割的部分构成,省略sep默认以空格分隔
str.count(sub)返回sub字串出现的次数
str.replace(old,new)返回字符串str的副本,所有old子串被替换为new
str.center(width,fillchar)字符串居中函数,fillchar参数可选
str.strip(chars)从字符串str中去掉在其左侧和右侧chars中列出的字符
str.join(iter)将iter变量的每一个元素后增加一个str字符串

3.5 类型判断和类型问间转换

Python语言提供type(x)函数对变量x进行类型判断,适用于任何数据类型。

数值运算操作符可以隐式地转换输出结果的数字类型,例如:两个整数采用运算符”/“的除法将可能输出浮点数结果。此外,通过内置的数字类型转换函数可以显式地在数字类型之间进行转换。

函数描述
int(x)将x转换为整数,x可以是浮点数或字符串
float(x)将x转换为浮点数,x可以是整数或字符串
str(x)将x转换为字符串,x可以是整数或浮点数

3.6 实例解析——恺撒密码

恺撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面的第三个字符,即循环右移3位:

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

原文字符P,其密文字符C满足如下条件:C = ( P + 3 ) mode 26

解密方法反之,满足:P ( C - 3 ) mod 26

# 恺撒密码——加密
# 恺撒密码的加密算法程序首先接收用户输入的文本,然后对字母a-z和字母A-Z按照密码算法进行转换
txt=input("请输入待加密的明文密码:")
for p in txt:if "a" <= p <= "z":print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end="")elif "A" <= p <="Z":print(chr(ord("A") + (ord(p) - ord("A") + 3) % 26), end="")else:print(f"{p}",end="")# 恺撒密码——解密
# 恺撒密码的解密算法程序首先接收用户输入的加密文本,然后对字母a-z和字母A-Z按照密码算法进行反向转换
txt = input("请输入待解密的密文:")
for p in txt:if "a" <= p <= "z":print(chr(ord("a") + (ord(p) - ord("a") - 3) % 26), end="")elif "A" <= p <= "Z":print(chr(ord("A") + (ord(p) - ord("A") - 3) % 26), end="")else:print(f"{p}", end="")

习题3

一、选择题
  1. 以下是八进制数字的是:______

    A 0b072 B 0a1010 C 0o711 D 0x456

    正确答案:C

  2. 以下字符串合法的是:______

    A “abc’def’ghi” B “I love “love” Python” C “I love Python” D 'I love 'Python"

    正确答案:A

  3. Python程序采用Unicode编码,英文字符和中文字符在Python中分别对应字符的个数是:______

    A 1;1 B 1;2 C 2;1 D 2;2

    正确答案:A

  4. 以下不是Python内置数据类型的是:______

    A char B int C float D list

    正确答案:A

  5. Python支持复数类型,以下说法错误的是:______

    A 实部和虚部都是浮点数 B 表示复数的语法是real+image j

    C 1+1j是复数 D 虚部后缀j必须是小写形式

    正确答案:D

  6. 以下是print(‘\nPython’)语句运行结果的是:______

    A 在新的一行输出:Python B 直接输出:‘\nPython’

    C 直接输出:\nPython D 先输出n,然后新的一行输出Python

    正确答案:A

  7. 字符串:s = ‘abcde’,n是字符串s的长度。索引字符串s字符’c’,哪个语句是正确的?______

    A s[n/2] B s[(n+1)/2] C s[n//2] D s[(n+1)//2]

    正确答案:C

  8. 以下不是Python内置函数的是:______

    A int() B float() C len() D string()

    正确答案:D

  9. 以下能够根据逗号’,'分隔字符串的是:______

    A s.split() B s.strip() C s.center D s.replace()

    正确答案:A

  10. 以下能够同时作用于所有数字类型和字符串类型的函数是:______

    A len() B complex() C type() D bin()

    正确答案:C

二、编程题
  1. 获得用户输入的一个整数,输出该整数百位及以上的数字。

    num = int(input("请输入一个整数:"))
    if num >= 100:print(f"该整数百位及以上的数字是:{num // 100}")
    
  2. 获得用户输入的一个字符串,将字符串按照空格分割,然后逐行打印出来。

    content = input("请输入一段字符串:")
    content1 = content.split()
    for i in content1:print(i)
    
  3. 程序读入一个表示星期几的数字(1-7),输出对应的星期字符串名称。例如:输入3,返回“星期三”。

    num = int(input("请输入表示星期几的数字(1-7):"))
    if num == 1:print(f"星期一")
    elif num == 2:print(f"星期二")
    elif num == 6:print(f"星期三")
    elif num == 4:print(f"星期四")
    elif num == 5:print(f"星期五")
    elif num == 6:print(f"星期六")
    elif num == 7:print(f"星期日")
    else:print("输入错误!")
    
  4. 设n是一任意自然数,如果n的各位数字反向排列所得自然数与n相等,则n被称为回文数。从键盘输入一个5位数字,请编写程序判断这个数字是不是回文数。

    num = input("请输入一个5位数字:")
    if num == num[::-1]:print(f"{num}是回文数")
    else:print(f"{num}不是回文数")
    
  5. 输入一个十进制整数,分割输出其二进制、八进制、十六进制字符串。

    decimal_num = int(input("请输入一个十进制整数:"))bin_num = bin(decimal_num)[2:]  # 二进制
    oct_num = oct(decimal_num)[2:]  # 八进制
    hex_num = hex(decimal_num)[2:]  # 十六进制print(f"二进制数字为:{bin_num}")
    print(f"八进制数字为:{oct_num}")
    print(f"十六进制数字为:{hex_num}")
    

http://www.ppmy.cn/news/76696.html

相关文章

linux命令行如何查看命令帮助信息

一&#xff0c;简介 “授之以鱼不如授之以渔”&#xff0c;我们再学习linux命令的时候&#xff0c;想查看某个命令的详细说明&#xff0c;有哪些方法呢&#xff1f;本文来介绍一下如何在命令行查找命令的帮助信息。 二&#xff0c;linux命令格式介绍 Linux命令一般由三部分组…

玩转SpringCloud Alibaba,看阿里大佬的笔记是真香

大家都知道&#xff0c;SpringCloudAlibaba 风靡 Java 开发行业&#xff0c;各个公司都在用这套技术&#xff0c;所以咱们 Java 工程师不管是日常工作或是出去面试&#xff0c;都会用到或者被问到关于SpringCloudAlibaba的应用以及底层原理 所以说&#xff0c;小编下面带来一份…

Compose For Desktop 实践:使用 Compose-jb 做一个时间水印助手

前言 在我之前的文章 在安卓中实现读取Exif获取照片拍摄日期后以水印文字形式添加到照片上 中&#xff0c;我们已经实现了在安卓端读取 Exif 信息后添加文字水印到图片上。 也正如我在这篇文章中所说的&#xff0c;其实这个需求使用手机来实现是非常不合理的&#xff0c;一般…

截图自动添加水印(macOS/windows)

文章目录 1. 截图自动加水印1.1. windows1.2. macOS 2. 对已有图像批量加水印2.1 windows2.2 macOS 1. 截图自动加水印 1.1. windows 直接看这篇文章&#xff0c;一键截图自动生成水印/自动签名主要就是使用一个叫 SPX 的软件 1.2. macOS 其实apple的操作系统&#xff0c;i…

JavaWeb14 - 异步请求 - 02 - Ajax

1. 概述 1.1 官方文档 Ajax 在线文档&#xff1a;https://www.w3school.com.cn/js/js_ajax_intro.asp 1.2 Ajax 基本介绍 1.2.1 Ajax 是什么 AJAX 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML)Ajax 是一种浏览器异步发起请求(指定发哪些数据)&…

入门级L2「对标」NOA/行泊一体,车企如何做出选择题?

随着整体汽车市场对于智能化成本的权衡&#xff0c;新车配置以基本入门级L2为主&#xff0c;还是NOA为代表的L2为主&#xff0c;是摆在车企面前的一个选择题。 而从目前的销量数据来看&#xff0c;以2023年一季度为例&#xff0c;入门级L2的新车交付量为115.8万辆&#xff0c;…

postgresql|数据库|插件学习(一)---postgresql-12的内置插件pg_stat_statements的启用和使用

前言&#xff1a; 插件就是原软件的扩展功能。postgresql有非常多的各种各样的插件&#xff0c;当然了&#xff0c;插件不安装对于我们使用数据库并没有什么太多的影响&#xff0c;可能只是不舒服一些而已&#xff0c;但有一些插件我们如果有安装&#xff0c;那么&#xff0c;对…

python获取tx弹幕数据并制作词云图

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 知识点介绍: 爬虫基本思路流程 requests模块的使用 pandas读取表格数据 环境介绍: 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用&#xff1a; requests >>> pip install requests pa…