Python学习笔记01

时间:2024-03-23 20:20:22

第一章、你好Python

初识Python

Python的起源

1989年,为了打发圣诞节假期,Gudiovan Rossum吉多·范罗苏姆(龟叔)决心开发一个新的解释程序(Python雏形)

1991年,第一个Python解释器诞生

Python这个名字,来自龟叔所挚爱的电视剧Monty Python's Flying Circus

为什么选择Python

优雅:

  • 简单
  • 易学
  • 开发效率高

适用面广泛

人群/岗位               用Python做什么

IT从业者                 自动化脚本(运维开发、测试开发等)

普通白领                 自动化办公

后端开发                 WEB应用程序

科学家                     基于Python完成数据计算(生物、化学、物理)

人工智能/机器学习   基于Python开发AI程序

大数据开发               基于Python完成大数据任务开发(Spark、Flink)

学生                          计算机二级考试 小学六年级Python课程

什么是编程语言

用于人类和计算机进行交流的一种语言,通过编写编程语言的代码,去指挥计算机工作。它无法直接和计算机沟通,需要翻译工具(解释器或编译器)将代码翻译成二进制,从而实现和计算机的畅顺沟通

思考:为什么不直接把中文翻译成二进制呢?

自然语言远比编程语言复杂,编程语言语法”死板”,“翻译官”更容易翻译。

Python安装(Windows & Linux)

下载(Windows)

想要使用Python语言编写程序,我们必须下载Python安装包并配置Python环境,Python目前最新版本是:3.10.4(发布于2022年3月24日)

下载最新版Python

Download Python | Python.org

验证安装:

点击左下角windows键

输入:cmd

打开“命令提示符”程序

在命令提示符程序内,输入:python并回车

下载(Linux)

在Linux上安装Python需要先安装前置依赖程序。

登陆到Linux中,使用yum程序进行依赖程序安装,执行如下命令:

yum install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel -y

下载最新版Python

Download Python | Python.org

找到Linux系统按钮,并点击,点击后在弹出的网页内,点击最新的python3.10.4的按钮,拖动网页到最下方,找到Gzipped source tarball按钮,点击右键,选择复制链接

进入到Linux系统内,使用wget命令,粘贴复制的下载链接,进行下载:

执行下载:

cd ~

wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz

解压安装包,执行:

tar -xvf Python-3.10.4.tgz

安装(Linux)

切换目录到解压后的Python安装文件夹:

# 切换目录

cd Python-3.10.4

1.配置

./configure --prefix=/usr/local/python3.10.4

大约耗时30秒

2.编译

make && make install

大约耗时10分钟,请耐心等待

编译完成后,可以配置软链接,方便快速使用python:

执行:

#删除系统自带的老版本(python2)的软链接

rm -f /usr/bin/python

#创建软链接

ln -s /usr/local/python3.10.4/bin/python3.10 /usr/bin/python

创建软链接后,会破坏yum程序的正常使用(只能使用系统自带的python2)

修改如下2个文件:

/usr/bin/yum

/usr/libexec/urlgrabber-ext-down

使用vi编辑器,将这2个文件的第一行,从

#!/usr/bin/python

修改为:

#!/usr/bin/python2

验证安装(Linux)

在Linux系统命令行窗口内,直接执行:python 并回车,看到Python 3.10.4字样,即表明安装成功。

第一个Python程序

向世界说你好,应该是全世界,所有程序员入门编程语言时,都会选择的第一个程序。让我们也延续这一份来自程序员之间的浪漫,学习如何使用Python,向世界说你好。我们的Python代码非常简单,如下:

print("Hello World!!!")

含义:向屏幕上输出(显示),Hello World!!!

注意:输入的双引号和括号,请使用英文符号哦

打开CMD(命令提示符)程序,输入Python并回车

然后,在里面输入代码回车即可立即执行

练习

请在“命令提示符” (CMD)程序内,通过Python,向屏幕上输出:零基础,学Python,月薪过万,就来黑马程序员。

print("零基础,学Python,月薪过万,就来黑马程序员。")

常见问题

问题描述:找不到“命令提示符”程序在哪里

问题解答:

使用快捷键:win+r

打开运行框,输入cmd后回车即可打开命令提示符程序

问题描述:命令提示符内,输入python出现 'python'不是内部或外部命令,也不是可运行的程序或批处理文件。

问题解答:安装python的时候,没有勾选:add python 3.10 to PATH的选项

卸载Python,重新安装python,勾选这个选项。

然后重新打开命令提示符程序,即可出现

问题描述:命令提示符内,无法初始化设备PRN

问题解答:这是因为没有进入到python解释器环境内执行代码。

应该在命令提示符内:

1.先输入python,当屏幕上出现:>>> 的标记的时候

2.输入代码执行,才可以

问题描述:执行出现:SyntaxError:invalid character ' “ ' (U+201C)

问题解答:这是因为,代码中的符号是中文符号。

请检查代码中的:

- 双引号

- 小括号

这两个符号,应该是英文符号

Python解释器

安装Python环境,本质上,就是在电脑中,安装:Python解释器程序

代码,随时可以写,但能不能运行,就要看电脑里面有没有解释器程序了。

Python解释器,是一个计算机程序,用来翻译Python代码,并提交给计算机执行。所以,它的功能很简单,有2点:

1.翻译代码

2.提交给计算机运行

解释器我明白了,可是解释器在哪呢?

解释器存放在:/python.exe

我们在CMD(命令提示符)程序内,执行的python,就是python.exe程序

思考一下:

在python解释器程序内,我们发现,写完一行代码并回车后,会直接运行他。

问题来了:

我们能否写好多行代码,一次性的运行呢?

我们可以将代码,写入一个以”.py”结尾的文件中,使用python命令去运行它。

如,在Windows系统的D盘,我们新建一个名为:test.py的文件,并通过记事本程序打开它,输入如下内容:

print("学Python,来黑马!!!")

print("月薪过万。")

在“命令提示符”程序内,使用python命令,运行它

python d:\test.py

总结

1.计算机只认识什么?

0和1

2.Python解释器的作用是

将Python代码翻译成计算机认识的0和1并提交计算机执行

在解释器环境内可以一行行的执行我们输入的代码

也可以使用解释器程序,去执行".py"代码文件

3.“.py”文件是什么?

python语言的代码文件,里面记录了python的代码

4.Python解释器程序在

/python.exe

Python开发环境

Python程序的开发有许多种方式,一般我们常见的有:

  • Python解释器环境内,执行单行代码
  • 使用Python解释器程序,执行Python代码文件
  • 使用第三方IDE(集成开发工具),如PyCharm软件,开发Python程序

(最常用的就是使用PyCharn软件进行开发)

PyCharm集成开发工具(IDE),是当下全球Python开发者,使用最频繁的工具软件。绝大多数的Python程序,都是在PyCharm工具内完成的开发。

下载并安装PyCharm

- 打开网站:Download PyCharm: The Python IDE for data science and web development by JetBrains

总结

1.Python最常见的开发环境是:

PyCharm软件,这是一个专用于Python的开发工具

2. PyCharm需要以“工程”为单元,供我们使用。想要写代码

需要先创建一个工程拓展:PyCharm的基础使用

PyCharm常用快捷键

  • ctrl+alt+s:打开软件设置
  • ctrl+d:复制当前行代码
  • shift+ alt+上\下:将当前行代码上移或下移
  • crtl+shift+f10:运行当前代码文件
  • shift+f6:重命名文件
  • ctrl+a:全选
  • ctrl+c\v\x:复制、粘贴、剪切
  • ctrl+f:搜索

总结

初识Python

Python的起源:

1989吉多范罗苏姆在圣诞节的假期决心开发一个新的解释器程序,Python的雏形

1991第一个Python解释器程序诞生了

Python名字 来自于吉多范罗苏姆喜爱的电视:Monty Python's Flying Circus

为什么选择Python

优雅:简单 易学 开发效率高

适用面非常广泛

什么是编程语言

概念:人类和计算机交流的一种专有领域语言

工作原理:将人类的想法,翻译成计算机可以识别的二进制,让计算机工作

Python的安装

第一个Python程序

print("Hello World") 标点符号一定要是英文的符号

常见问题:

找不到命令提示符 快捷键:win+t 输入cmd

python不是内部或外部命令 安装python的时候,没有勾选 Add Python 3.10to PATH

SyntaxErrorinvalid character 标点符号写成了中文符号

Python解释器的作用

计算机只认识什么? 0和1 二进制

Python的解释器的作用:

  • 将Python代码翻译成计算机能够识别的0和1(二进制)
  • 解释器会将翻译的二进制提交给计算机去执行

".py":Python语言的代码文件,里面记录的python的代码

Python的解释器程序在哪里? 的安装目录/python.exe

Python的开发环境

IDE工具PyCharm Python开发者使用的最多的开发工具

第二章、Python基础语法

字面量

什么是字面量:

字面量:在代码中,被写下来的的固定的值称之为字面量

常用的值类型

Python中常用的有6种值(数据)的类型

类型                    描述                               说明

数字(Number)   支持:

                            整数 (int)                       整数(int),如:10、-10

                           浮点数(float)              浮点数(float),如:13.14、-13.14

                           复数(complex)                复数(complex),如:4+3j,以结尾表示复数

                           布尔(bool)                    布尔(bool)表达现实生活中的逻辑,即真和假,True表示真,False表示假。True本质上是一个数字记作1,False记作0

字符串(String)  描述文本的一种数据类型   字符串(string)由任意数量的字符组成

列表(List)      有序的可变序列              Python中使用最频繁的数据类型,可有序记录一堆数据

元组(Tuple)   有序的不可变序列         可有序记录一堆不可变的Python数据集合

集合(Set)         无序不重复集合             可无序记录一堆不重复的Python数据集合

字典(Dictionary) 无序Key-Value集合        可无序记录一堆Key-Value型的Python数据集合

字符串

字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串

如:

  • "黑马程序员”
  • "学Python来黑马"
  • "!@#$%^&"
  • "传智教育的股票代码是:003032"

Python中,字符串需要用双引号( " )包围起来

如何在代码中表达所学类型

我们目前要学习的这些类型,如何在代码中表达呢?

类型              程序中的写法         说明

整数                     666,-88       和现实中的写法一致

浮点数(小数) 13.14, -5.21  和现实中的写法一致

字符串(文本) "黑马程序员”   程序中需要加上双引号来表示字符串

总结

1.掌握字面量的含义

代码中,被写在代码中的固定的值,称之为字面量

2.常见的字面量类型

我们目前了解:整数、浮点数、字符串这三类即可

3.如何基于print语句完成各类字面量的输出

print(字面量),如:

print(10),输出整数10

print(13.14),输出浮点数13.14

print("黑马程序员"),输出字符串:黑马程序员

注释

注释的作用

未使用注释代码:

666

13.14

"黑马程序员"

print(666)

print(13.14)

print("黑马程序员")

使用注释的代码:

" " "

演示:

- 各类字面量的写法

- 通过print语句输出各类字面量

" " "

# 写一个整数字面量

666

# 写一个浮点数字面量

13.14

# 写一个字符串字面量

"黑马程序员”

# 通过print语句输出各类字面量

print(666)

print(13.14)

print("黑马程序员")

注释:在程序代码中对程序代码进行解释说明的文字。

作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增强程序的可读性。

注释的分类

单行注释:#开头,#右边 的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用

例:

# 我是单行注释

print("Hello World")

注意,#号和注释内容一般建议以一个空格隔开

温馨提示:规范是Python官方建议的要求,不强制,不遵守也不影响程序执行但官方和大厂的代码都会遵守规范,所以遵守规范也会让我们的代码更高级。

多行注释: 以一对三个双引号引起来("""注释内容""")来解释说明一段代码的作用使用方法 " " "

我是多行注释

诗名:悯农

作者:李绅

" " "

print("锄禾日当午")

print("汗滴禾下土")

print("谁知盘中餐")

print("粒粒皆辛苦")

注释实战

按照如下案例所示,对代码添加

  • 单行注释以及
  • 多行注释

添加完成注释后,执行程序,验证注释是否对程序产生影响

" " "

演示:

- 各类字面量的写法

- 通过print语句输出各类字面量

" " "

# 写一个整数字面量

666

# 写一个浮点数字面量

13.14

# 写一个字符串字面量

"黑马程序员"

# 通过print语句输出各类字面量

print(666)

print(13.14)

print("黑马程序员")

总结

1.注释的作用是?

注释是代码中的解释型语句,用来对代码内容进行注解

注释不是代码,不会被程序执行

2.单行注释如何定义?

通过#号定义,在#号右侧的所有内容均作为注释

建议在#号和注释内容之间,间隔一个空格

单行注释一般用于对一行或一小部分代码进行解释

3.多行注释如何定义?

通过一对三个引号来定义("""注释内容"""),引号内部均是注释,可以换行

多行注释一般对:Python文件、类或方法进行解释

变量

什么是变量

变量:在程序运行时,能储存计算结果或能表示值的抽象概念。简单的说,变量就是在程序运行时,记录数据用的

变量的定义格式:

变量名称 = 变量的值

变量名称:每一个变量都有自己存储的值(内容),称之为:变量值

=:赋值,表示将等号右侧的值,赋予左侧的变量

变量的值:每一个变量都有自己的名称,称之为:变量名,也就是变量本身

总结

1.变量是什么,有什么作用?

变量就是在程序运行时,记录数据用的

2.变量的定义格式是?

变量名 = 变量值

3.变量的特征是?

变量的值可以改变

4.print语句如何输出多份内容?

print(内容1,内容2,.....内容N)

5.Python中如何做减法?

使用符号 - 即可完成减法运算

拓展:加(+)、减(-)、乘(*)、除(/)

数据类型

在学习字面量的时候,我们了解到:数据是有类型的。

目前在初学阶段,我们主要接触如下三类数据类型:

类型          描述               说明

string     字符串类型        用引号引起来的数据都是字符串

int          整型(有符号) 数字类型,存放整数 如-1,10,0等

float       浮点型(有符号)   数字类型,存放小数 如-3.14, 6.66等

string、int、float这三个英文单词,就是类型的标准名称。

type()语句

如何验证数据的类型呢?

我们可以通过type()语句来得到数据的类型:

语法:type(被查看类型的数据)

type()语句的使用方式:

1.在print语句中,直接输出类型信息:

print(type("黑马程序员"))

print(type(666))

print(type(11.345))

输出结果:

<class 'str'>

<class 'int'>

<class 'float'>

str是string的缩写<class 'str'>

2.用变量存储type()的结果(返回值):

string_type= type("黑马程序员")

int_type = type(666)

float_type = type(11.345)

print(string_type)

print(int_type)

print(float_type)

输出结果:

<class 'str'>

<class 'int'>

<class 'float'>

查看变量中存储的数据类型:

name = "黑马程序员"

name_type = type(name)

print(name_type)

输出结果:

<class 'str'>

变量有类型吗?

我们通过type(变量)可以输出类型,这是查看变量的类型还是数据的类型?

查看的是:变量存储的数据的类型。因为,变量无类型,但是它存储的数据有。

我们可能会说:字符串变量

但要知道,不是变量是字符串,而是它存储了:字符串

总结

1.使用什么语句可以查看数据的类型?

type()

2.如下代码,name_type变量可以存储变量name的类型信息 ,为什么?

name = "黑马程序员"

name_type = type(name)

因为type()语句会给出结果(返回值)

3.变量有没有类型?

没有,字符串变量表示变量存储了字符串而不是表示变量就是字符串

数据类型转换

为什么要转换类型

数据类型之间,在特定的场景下,是可以相互转换的,如字符串转数字、数字转字符串等

那么,我们为什么要转换它们呢?

数据类型转换,将会是我们以后经常使用的功能。

如:

  • 从文件中读取的数字,默认是字符串,我们需要转换成数字类型
  • 后续学习的input()语句,默认结果是字符串,若需要数字也需要转换
  • 将数字转换成字符串用以写出到外部系统

常见的转换语句

语句(函数)     说明

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

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

str(x)             将对象×转换为字符串

同前面学习的type()语句一样,这三个语句,都是带有结果的(返回值),我们可以用print直接输出,或用变量储存结果值

总结

1.字符串、整数、浮点数类型转换的语句是?

语句(函数) 说明

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

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

str(x)             将对象×转换为字符串

2.任何类型都可以转换成字符串,对不对?

正确

3.字符串可以随意转换成数字,对不对?

错误,字符串内必须只有数字才可以

4.浮点数转整数会丢失什么?

丢失精度,也就是小数部分

标识符

什么是标识符

在Python程序中,我们可以给很多东西起名字,比如:

  • 变量的名字
  • 方法的名字
  • 类的名字,等等

这些名字,我们把它统一的称之为标识符,用来做内容的标识。

所以,标识符是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名。

标识符命名规则

既然要起名字,就会有对应的限制

Python中,标识符命名的规则主要有3类:

  • 内容限定
  • 大小写敏感
  • 不可使用关键字

标识符命名规则-内容限定

标识符命名中,只允许出现:

  • 英文
  • 中文
  • 数字
  • 下划线(_)

这四类元素,其余任何内容都不被允许。

注意:

  1. 不推荐使用中文
  2. 数字不可以开头

标识符命名规则-大小写敏感

以定义变量为例:

Andy = "安迪1"

andy = "安迪2"

print(Andy)

print(andy)

输出结果:

安迪1

安迪2

字母a的大写和小写,是完全能够区分的。

标识符命名规则-不可使用关键字

Python中有一系列单词,称之为关键字,关键字在Python中都有特定用途,我们不可以使用它们作为标识符

False True None and as assert break class continue def del elif else for try is finally from if lambda in raise return except not global or pass import while nonlocal with yield

变量命名规范

学完了标识符(变量、类、方法)的命名规则后,我们在来学习标识符的命名规范

  • 变量名
  • 类名
  • 方法名

不同的标识符,有不同的规范。

我们目前只接触到了:变量。所以,目前学习:变量的命名规范。

  • 见名知意
  • 下划线命名法
  • 英文字母全小写

变量命名规范-见名知意

变量的命名要做到:

明了:尽量做到,看到名字,就知道是什么意思

错误示范:a = "张三" b = "11"

正确示范:name = "张三" age = "11"

简洁:尽量在确保“明了”的前提下,减少名字的长度

错误示范:a_person_name = "张三"

正确示范:name = "张三"

变量命名规范-下划线命名法

多个单词组合变量名,要使用下划线做分隔。

错误示范:firstnumber = 1 studentnickname = "小明"

正确示范:first_number = 1 student_nickname = "小明"

变量命名规范-英文字母全小写

命名变量中的英文字母,应全部小写:

错误示范:Name = "张三" Age = 11

正确示范:name = "张三" age = 11

总结

1.什么是标识符?

用户编写代码时,对变量、类、方法等编写的名字,叫做标识符。

2.标识符的命名规则?

  • 内容限定(中文、英文、数字、下划线)
  • 大小写敏感
  • 不可使用关键字

3.变量的命名规范?

  • 见名知意
  • 下划线命名法
  • 英文字母全小写

运算符

算术(数学)运算符

运算符  描述      实例

+           加          两个对象相加,a+b,输出结果 30

-            减          得到负数或是一个数减去另一个数,a-b,输出结果-10

*            乘          两个数相乘或是返回一个被重复若干次的字符串,a*b,输出结果200

/             除          b/a,输出结果,2

//         取整除      返回商的整数部分,9//2,输出结果4,9.0//2.0,输出结果4.0

%         取余         返回除法的余数,b%a,输出结果0

**         指数         a**b为10的20次方,输出结果100000000000000000000

赋值运算符

运算符  描述        实例

=     赋值运算符   把=号右边的结果赋给左边的变量,如num=1+2*3,结果num的值为7

复合赋值运算符

运算符       描述                    实例

+=      加法赋值运算符    c += a等效于c = c + a

-=       减法赋值运算符     c -= a等效于c = c - a

*=        乘法赋值运算符    c *= a等效于c = c * a

/=        除法赋值运算符    c /= a等效于c = c / a

%=      取模赋值运算符    c %= a等效于 c = c % a

**=      幂赋值运算符        c **= a等效于c = c ** a

//=     取整除赋值运算符   c //= a等效于c = c // a

总结

1.常见的算术(数学)运算符有:

加(+)、减(-)、乘(*)、除(/)、整除(//)、取余(%)、求平方(**)

2.赋值运算符有:

  • 标准赋值:=
  • 复合赋值:+=、-=、*=、/=、//=、%=、**=

字符串扩展

字符串的三种定义方式

字符串在Python中有多种定义形式:

  1. 单引号定义法:name = '黑马程序员'
  2. 双引号定义法:name = "黑马程序员"
  3. 三引号定义法:name = " " " 黑马程序员 " " "

三引号定义法,和多行注释的写法一样,同样支持换行操作。使用变量接收它,它就是字符串,不使用变量接收它,就可以作为多行注释使用。

字符串的引号嵌套

思考:如果我想要定义的字符串本身,是包含:单引号、双引号自身呢?如何写?

  • 单引号定义法,可以内含双引号
  • 双引号定义法,可以内含单引号
  • 可以使用转移字符(\)来将引号解除效用,变成普通字符串

总结:

1.字符串的三种定义方式:

  • 单引号方式
  • 双引号方式
  • 三引号方式

2. 引号的嵌套

  • 可以使用:\来进行转义
  • 单引号内可以写双引号或双引号内可以写单引号

字符串拼接

如果我们有两个字符串(文本)字面量,可以将其拼接成一个字符串,通过+号即可完成,如:

print("学IT来黑马" + "月薪过万")

输出结果: 学IT来黑马月薪过万

不过一般,单纯的2个字符串字面量进行拼接显得很呆,一般,字面量和变量或变量和变量之间会使用拼接,如:

name = "黑马程序员"

print("我的名字是:" + name + ",我可以教大家IT技能")

输出结果:我的名字是:黑马程序员,我可以教大家IT技能

总结:

1.如何完成字符串拼接?

使用“+”号连接字符串变量或字符串字面量即可

2.有哪些注意事项?

无法和非字符串类型进行拼接

字符串格式化

我们会发现,这个拼接字符串也不好用啊 print("我是" + name + ",我的性别是:" + sex + ",我住在:" + address + ",我的爱好是:" + hobby)

  • 1.变量过多,拼接起来实在是太麻烦了
  • 2. 字符串无法和数字或其它类型完成拼接。

所以,有没有其它方式,即方便又支持拼接其它类型呢?

这个方式,就是字符串的格式化

我们可以通过如下语法,完成字符串和变量的快速拼接。

name = " 黑马程序员 "

message = "学IT就来 %s" % name

print(message)

输出结果:学IT就来 黑马程序员

其中的,%s

  • %表示:我要占位
  • s表示:将变量变成字符串放入占位的地方

所以,综合起来的意思就是:我先占个位置,等一会有个变量过来,我把它变成字符串放到占位的位置

那,数字类型呢?可以不可以占位?当然可以,我们来尝试如下代码:

class_num = 57

avg_salary = 16781

message = "Python大数据学科,北京%s期,毕业平均工资:%s" % (class_num,avg_salary)

print(message)

注意:多个变量占位变量要用括号括起来并按照占位的顺序填入

输出结果:Python大数据学科,北京57期,毕业平均工资:16781

数字也能用%s占位吗? 当然可以,这里是将数字转换成了字符串,也就是数字57,变成了字符串“57”被放入占位的地方

Python中,其实支持非常多的数据类型占位

最常用的是如下三类

格式符号    转化

%s    将内容转换成字符串,放入占位位置

%d    将内容转换成整数,放入占位位置

%f     将内容转换成浮点型,放入占位位置

如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位

name = "传智播客"

set_up_year = 2006

stock_price = 19.99

message = "我是:%s,我成立于:%d,我今天的股价是:%f" % (name,set_up_year,stock_price)

print(message)

输出结果:我是:传智播客,我成立于:2006,我今天的股价是:19.990000

总结:

1.字符串格式化的语法?

"%占位符" % 变量

2.常用占位符有哪3个?

  • 字符串:%s
  • 整数: %d
  • 浮点数:%f

格式化的精度控制

如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位

name = "传智播客"

set_up_year = 2006

stock_price = 19.99

message = "我是:%s,我成立于:%d,我今天的股价是:%f" % (name, set_up_year, stock_price)

print(message)

输出结果:我是:传智播客,我成立于:2006,我今天的股价是:19.990000

细心的同学可能会发现:浮点数19.99,变成了19.990000输出

我们可以使用辅助符号"m.n”来控制数据的宽度和精度

  • m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
  • .n,控制小数点精度,要求是数字,会进行小数的四舍五入

示例:

  • %5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。
  • %5.2f:表示将宽度控制为5,将小数点精度设置为2

小数点和小数部分也算入宽度计算。如,对11.345设置了%7.2f后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为.35

  • %.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35

示例:

num1 =11

num2 = 11.345

print("数字11宽度限制5,结果:%5d" % num1)

print("数字11宽度限制1,结果:%1d" % num1)

print("数字11.345宽度限制7,小数精度2,结果:%7.2f" % num2)

print("数字11.345不限制宽度,小数精度2,结果:%.2f" % num2)

输出结果:

数字11宽度限制5,结果: 11   宽度5,补了3个空格

数字11宽度限制1,结果:11    宽度小于数字本身,无影响

数字11.345宽度限制7,小数精度2,结果: 11.35    宽度7,补了2个空格,小数精度2,四舍五入后为.35

数字11.345不限制宽度,小数精度2,结果:11.35    不限制宽度,小数点后四舍五入后为.35

总结:

1.精度控制的语法是:

m.n的形式控制,如%5d、%5.2f、%.2f

m和.n均可省略

2.如果m比数字本身宽度还小,会发生什么事?

m不生效

3..n会对小数部分做精度限制,同时:?

会对小数部分做四舍五入

字符串格式化方式2

目前通过%符号占位已经很方便了,还能进行精度控制。可是追求效率和优雅的Python,是否有更加优雅的方式解决问题呢?

当然有

通过语法:f"内容{变量}"的格式来快速格式化

看如下代码:

name = "传智播客"

set_up_year = 2006

stock_price = 19.99

print(f"我是{name},我成立于:{set_up_year},我今天的股票价格是:{stock_price}")

输出结果:我是传智播客,我成立于:2006,我今天的股票价格是:19.99     不做精度控制,原样输出

总结:

1. 可以通过

f" {变量} {变量}" 的方式进行快速格式化

2.这种方式:

  • 不理会类型
  • 不做精度控制

适合对精度没有要求的时候快速使用

对表达式进行格式化

刚刚的演示,都是基于变量的。

可是,我想更加优雅些,少写点代码,直接对“表达式”进行格式化是否可行呢?那么,我们先了解一下什么是表达式。

表达式:一条具有明确执行结果的代码语句

如:

1 + 1、5 * 2,就是表达式,因为有具体的结果,结果是一个数字

又或者,常见的变量定义:

name = "张三" age = 11 + 11

等号右侧的都是表达式,因为它们有具体的结果,结果赋值给了等号左侧的变量。

那么,对于字符串格式化,能否直接格式化一个表达式呢?

当然可以,上代码:

print("1 * 1的结果是:%d" %(1 * 1))

print(f"1 * 1的结果是:{1 * 1}")

print("字符串在Python中的类型是:%s" % type('字符串'))

输出结果:

1 * 1的结果是:1

1 * 1的结果是:1

字符串在Python中的类型是:

在无需使用变量进行数据存储的时候,可以直接格式化表达式,简化代码

总结:

1.表达式是什么?

表达式就是一个具有明确结果的代码语句,如1+1、type("字符串")、3 * 5等

在变量定义的时候,如 age=11+11,等号右侧的就是表达式,也就是有具体的结果,将结果赋值给了等号左侧变量

2.如何格式化表达式?

  • f"(表达式]"
  • "%s\%d\%f" % (表达式、表达式、表达式)

练习:

股价计算小程序

定义如下变量:

  • name,公司名
  • stock_price,当前股价
  • stock_code,股票代码
  • stock_price_daily_growth_factor,股票每日增长系数,浮点数类型,比如1.2
  • growth_days,增长天数

计算,经过growth_days天的增长后,股价达到了多少钱

使用字符串格式化进行输出,如果是浮点数,要求小数点精度2位数。

示例输出:

公司:传智播客,股票代码:003032,当前股价:19.99     本行要求使用f"{变量}"的方式输出

每日增长系数是:1.2,经过7天的增长后,股价达到了:71.63    本行要求使用 % 占位符的方式输出

变量,要使用格式化的方式拼接进去

提示,可以使用:当前股价 * 增长系数 ** 增长天数,用来计算最终股价哦

如,股价19.99 * 系数1.2 ** 7天=71.62778419199998,小数点现在精度2位后结果:71.63

参考答案:

name = "传智播客"

stock_price = 19.99

stock_code = "003032"

stock_price_daily_growth_factor = 1.2

growth_days = 7

finally_stock_price = stock_price * stock_price_daily_growth_factor ** growth_days

print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")

print("每日增长系数是:%.1f,经过%d天的增长后,股价达到了:%.2f" % (stock_price_daily_growth_factor, growth_days, finally_stock_price))

数据输入

获取键盘输入

试想一下,我们经常遇到过程序需要我们输入信息的场景。比如:银行取钱

如何在Python中做到读取键盘输入的内容呢?

这里就要请出input语句了

input语句(函数)

我们前面学习过print语句(函数),可以完成将内容(字面量、变量等)输出到屏幕上。在Python中,与之对应的还有一个input语句,用来获取键盘输入。

  • 数据输出:print
  • 数据输入:input

使用上也非常简单:

  • 使用input()语句可以从键盘获取输入
  • 使用一个变量接收(存储)input语句获取的键盘输入数据即可

print("请告诉我你是谁?")

name = input()

print("Get!!!你是:%s" % name)

输出结果:

请告诉我你是谁?

黑马程序员      键盘输入内容并回车

Get!!!你是:黑马程序员

在前面的代码中,输出“请告诉我你是谁?”的print语句其实是多余的:print("请告诉我你是谁?")

input()语句其实是可以在要求使用者输入内容前,输出提示内容的哦,方式如下:

name = input("请告诉我你是谁?")

print("Get!!!你是:%s"% name)

输出结果:

请告诉我你是谁?

黑马程序员

Get!!!你是:黑马程序员

(在input的括号内直接填入提示内容即可。)

总结

1.input()语句的功能是,获取键盘输入的数据

2.可以使用:input(提示信息),用以在使用者输入内容之前显示提示信息。

3.要注意,无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型

练习

欢迎登陆小程序

定义两个变量,用以获取从键盘输入的内容,并给出提示信息:

  • 变量1,变量名:user_name,记录用户名称
  • 变量2,变量名:user_type,记录用户类型

并通过格式化字符串的形式,通过print语句输出欢迎信息,如下:

您好:黑马程序员,您是尊贵的:SSSSSVIP用户,欢迎您的光临。

变量:user_name

变量:user_type

参考答案:

user_name = input("姓名:")

user_type = input("用户类型:")

print("您好:%s,您是尊贵的:%s用户,欢迎您的光临。" % (user_name, user_type))