作者:HACKNOE

python从入门到精通(一): python的基础语法

python基础到数据分析可视化

第一章:使用集成环境开发软件pycharm

idea全家桶下载网站:
https://blog.idejihuo.com/jetbrains/intellij-idea-2023-2-5-latest-cracking-method-of-activation-code-cracking-tool.html
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

第二章:第一个python程序

(一)简单内容

1.1 print函数

print方法的作用 : 把想要输出的内容打印在屏幕上

print("Hello World")

在这里插入图片描述

1.2 输出中文

在Python 2.x版本中,默认的编码方式是ASCII编码方式,如果程序中用到了中文,直接输出结果很可能会出错,比如:

print("你好")

在这里插入图片描述

在Python 2.x版本中想要输出中文,解决的办法是,在程序的开头写入如下代码:

# -*- coding:utf-8 -*-

或者

# coding=utf-8

用于向 Python 解释器声明源代码文件所用的编码类型为“utf-8”,如果代码里有中文,打印的时候可以使中文正常显示。

1.3 行和缩进

缩进的空白数量是可变的,一般是使用4个空格键或者1个tab键,但是所有代码块语句必须是相同的缩进,这个必须严格执行,不同的缩进会导致程序不能运行,不能混用空格和tab

# 使用4个空格键
if True:
    print ("True")
else:
    print ("False")

第三章:python注释符

(一)基础内容

注释的作用 : 对其中部分代码的作用进行说明,增强程序的可读性

单行注释 (行注释)
#
2.1 单行注释

在这里插入图片描述

2.2 多行注释
多行注释 (块注释)
'''
'''
或者
"""
"""

在这里插入图片描述

2.3 快捷键注释

在 Windows 系统中,可以通过鼠标选择需要注释的代码,然后使用<kbd>Ctrl+/</kbd>可以快速注释或取消注释多行代码:

# class MusicPlayer(object):
#     # 记录第一个被创建对象的引用
#     instance = None
#     # 记录初始化执行状态
#     init_flag = False

    def __new__(cls, *args, **kwargs):
2.4 编码与解码

编码是将字符串转换为字节序列的过程,而解码则是将字节序列转换回字符串的过程。
编码

str = "Hello, 你好!"
encoded_str = str.encode()  # 默认使用UTF-8编码
print(encoded_str) 
# 输出:b'Hello, \xe4\xbd\xa0\xe5\xa5\xbd!'

解码

str = b'Hello, \xe4\xbd\xa0\xe5\xa5\xbd!'
decoded_str = str.decode()  # 默认使用UTF-8解码
print(decoded_str)
# 输出:Hello, 你好!
2.5 debug调试

利用单步执行来验证#号右边的不会被当做程序执行(debug调试)
点击行号和代码执行的空白处,生成断点,然后点击右上角瓢虫式的按钮,打开debug调试模式,点击console控制台,蓝色行首先选中第一行,代表正在准备执行,单击执行下一步,发现直接跳过注释代码,选中下一个即将执行的代码print(“hello”)
在这里插入图片描述

第四章:python的变量

	程序就是用来处理数据的,而变量就是用来存储数据的

(一)变量的定义

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
在 Python 中,变量就是变量,它没有类型
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的
Python 中使用变量,不需要声明直接为变量赋值即可使用,

单个变量赋值语法:

	变量名称 = 值
# 定义一个qq号码
qq_number = "123456"
# 定义一个qq密码
qq_password = "7891011"
# 使用解释器执行,如果要输出变量的内容,必须要要使用print 函数
print(qq_number)
print(qq_password)

多个变量赋值语法

变量名称 = 变量名称 = 变量名称 = 值
a = b = c = 100

变量练习题

可以用其他变量的计算结果来定义变量

需求:

  • 苹果的价格是 8.5 元/斤
  • 顾客一共买了 7.5斤苹果
  • 计算顾客付款金额总数

python实现的程序代码

# 定义苹果的价格
price = 8.5
# 定义买的数量
weight = 7.5
# 定义总金额
money = price * weight
# 输出最后的价格
print(money)

# 变量名 只有在第一次出现 才是定义变量
# 变量名 再次出现,不是定义变量,而是直接使用之前定义过的变量
1.1 变量的命名规范

标识符:
标识符是程序中某一元素(变量、关键字、函数、类、模块、对象)的名字,标识符是一个大的集合,变量只是其中之一,简单通俗的说就是程序员给变量或者函数取得的名字就叫标识符,名字显而易见的就是要见字知意

标识符的组成:
字母,下划线,数字 ,不能以数字开头

标识符由字母( A~Z , a~z )、数字(0-9)、以及下划线(_)组成。

关键字:
python内部自己定义的变量,一般都有指定的功能,所以取变量名要避开这些关键字

# 以下是Python的关键字
import keyword
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
1.2 变量的命名规则

python的变量命名是区分大小写的,按照规则书写可以保持代码的可读性,变量命名时尽量体现出值的数据类型。如命名 count、length 和 size 表明数据类型是数字,命名 name、title 和 message 表明数据类型是字符串,单个字符命名的变量诸如 i、j、k 通常在循环中使用

1.2.1 命名规则1:
1.= 号两边各留一个空格
2.变量名由超过两个以上的单词组成,每个单词之间由下划线链接
3.每个单词都小写
4.first_name,my_school_num 
1.2.2 命名规则2:
小驼峰:
1.第一个单词小写开始,后续单词大写
2.firstName

大驼峰:
1.每个单词的首字母都大写
2.FirstName

pycharm小技巧:批量关闭标签页
在这里插入图片描述

(二)变量的类型

在内存中创建一个变量,会包括:

  • 变量名称
  • 变量保存的数据
  • 变量存储数据的类型
  • 变量的地址 (标示)

变量类型练习题
需求

  • 定义变量保存小明的个人信息

  • 姓名:小明

  • 年龄:18岁

  • 性别:是男生

  • 身高:1.75米

  • 体重:75.0公斤

python代码
在运行的时候,Python 解释器会根据赋值语句等号右侧的数据自动推导出变量中保存数据的准确类型

name = "小明"
age = 18
sex = true
high = 1.75
weight = 75.0

利用单步调试确认变量中保存数据的类型
在这里插入图片描述

第五章:python的数据类型

在Python 中定义变量是不需要指定类型(在其他很多高级语言中都需要)数据类型可以分为 数字型 和 非数字型

(一)数字型

  • 整型(int)

    在这里提示在Python2.x中,整数根据保存数值的长度还分为
    int(整数)
    long(长整数)
    
  • 浮点型 (float )

  • 布尔型 (bool)

     真 True 非0数--非零即真
     假 False
     
     等同于True的值:
     -非零数值
     -非空字符串
     
     等同于False的值:
     None;
     False;
     任何为0的数字类型,如0、0.0、0j;
     任何空序列,如""、()、[];
     空字典,如{};
     用户定义的类实例,如类中定义了__bool__()或者__len__()方法,并且该方法返回0或者布尔值False。
    
  • 复数型(complex)

     主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
    

(二)非数字型

。字符串
。列表
。元组
。字典

(三)type查看数据类型

type(name)

在这里插入图片描述

(四)不同数据类型之间的计算

  1. 数字型之间可以直接计算
  2. 数字类型不能和字符串类型进行计算
  3. bool类型 True代表1 False代表0
4.1 数据类型计算练习
i = 10
f = 10.5
b = True
print(i + f)
print(i + b)
print(f - b)

在这里插入图片描述

4.2 字符串之间的计算

字符串使用+号进行计算是拼接的意思 会生成新的字符串
字符串使用*号进行计算是重复拼接的意思 会生成新的字符串
在这里插入图片描述

(五)变量的输入

5.1 input函数

input函数:获取用户在键盘上的输入使用 ,输入的任何内容都会被当做字符串,回结果为字符串 str 类型

函数的定义:函数是把重复使用的代码提前写好,封装起来我们直接用的,不需要重复造轮子

# input输人的任何内容都会被当做字符串 回结果为字符串 str 类型
name = input("请输入用户名")
passwd = input("请输入密码")
print(type(passwd))

<class 'str'>

在这里插入图片描述

(六)数据类型转换函数

6.1 int函数
int(x) 将x转换为一个整数
6.2 float函数
float(x) 将x转换为一个浮点数

可以搭配input函数一起使用:

num2 = input("请输入一个整数")
num1 = 10
num3 = num1 + num2
# 使用int将用户输入的内容进行转换
num2 = int(input("请输入一个整数"))
num1 = 10
num3 = num1 + num2
print(num3)

在这里插入图片描述
在这里插入图片描述

6.3 类型转换练习

需求
收银员输入 苹果的价格,单位:元/斤
收银员输入 用户购买苹果的重量,单位:斤
计算并且 输出 付款金额
在这里插入图片描述

第六章:python运算符

(一)python算数运算符

算术运算符包括:加(+)、减(-)、乘(*)、除(/)、取模(%)、幂(**)和取整除(//)

重点记忆:除法符号,除法 / 取整数 //和取余数 % 字符使用*符号表示重复显示指定次数,也就是拼接字符串
在这里插入图片描述

代码实例:


在这里插入图片描述
在这里插入图片描述

(二)python比较运算符

比较运算符包括:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量 True 和 False 等价

重点记忆:== = ===这三个符号的区别 =是赋值操作 ==是比较是否相等 ===是恒等于

在这里插入图片描述

Python2x中判断不等于还可以使用运算符<>,!= 在Python 2x 中同样可以用来判断不等于

比较运算符练习题

a = 21
b = 10
c = 0
 
if ( a == b ):
   print ("1 - a 等于 b")

(三)python逻辑运算符

  • 在程序开发中,通常在判断条件时,会需要同时判断多个条件
  • 只有多个条件都满足,才能够执行后续代码,这个时候需要使用到 逻辑运算符
  • 逻辑运算符 可以把 多个条件 按照 逻辑进行连接,变成更复杂的条件
  • Python 中的逻辑运算符 包括:与and 、或or 和 非not 三种

在 Python 中,整数0代表假,整数 1 代表真。除此之外,Python 也把任意的空数据结构视为假,把任何非空数据结构视为真。真和假的概念是 Python 中每个对象的固有属性,
一般来说:
① 数字如果非零,则为真;
② 其他对象如果非空,则为真。
② Python 还有一个特殊对象:None,它总被认为是假。

and
条件1 and 条件2/并且
两个条件同时满足,返回True
只要一个不满足,就返回False

在这里插入图片描述

or
条件1 or 条件2/或者
两个条件满足一个,返回True
两个条件都不满足,返回False

在这里插入图片描述

not 
not 条件
非/不是
取反的意思,原来是真的取反就是假的,原来是假的取反就是真的

在这里插入图片描述

逻辑运算符练习题

  • 1练习1:定义一个整数变量 age,编写代码判断年龄是否正确,要求人的年龄在0-120之间

  • 2.练习2:定义两个整数变量python_score、c_score,编写代码判断成绩,要求只要有一门成绩>60 分就算合格

  • 3.练习3:定义一个布尔型变量 is_employee,编写代码判断是否是本公司员工,如果不是提示不允许入内

#第一题
age = int(input("请输入年龄"))
if age >= 0 and age <= 120:
    print("您是个人")
else:
    print("您不是个人")
#第二题
python_score = 71
c_cosre = 50
if python_score >=60 or c_cosre >= 60:
    print("您及格了")
else:
    print("您不及格")
#第三题  
is_employee = True
if not is_employee:
    print("不是本公司员工,不允许入内")
else:
 	print("是本公司员工,允许入内")
  

(四)python赋值运算符

在Python 中,使用可以给变量赋值在算术运算时,为了简化代码的编写,Python 还提供了一系列的与算术运算符对应的赋值运算符注意:赋值运算符中间不能使用空格。
在这里插入图片描述

(五)python身份运算符

身份运算符用于比较两个对象的内存地址是否一致 – 是否是对同一个对象的引用
在Python中针对None比较时,建议使用is判断
在这里插入图片描述
is与 == 区别:
is用于判断两个变量引用对象是否为同一个
==用于判断 引用变量的值是否相等

a = [1,2,3]
b = [1,2,3]
if b is not a:
    print(a is b)

if b == a:
    print(b == a)
False
True
a = 1
b = 2
c = a
print(a is b)
print(a is c)
print(a is not b)
print(a is not c)
False
True
True
False

(六)python运算符优先级

以下表格列出了从最高到最低优先级的所有运算符, 相同单元格内的运算符具有相同优先级
在这里插入图片描述

第七章:程序执行的原理

了解计算机的核心硬件的工作原理,更有助于我们对python的理解

(一)核心三大硬件

  • CPU : 负责处理和计算数据
  • 内存 : 临时存储数据,读写速度快,空间小 断电内存中的数据会消失
  • 硬盘 : 永久存储数据,读写速度满,空间大

在这里插入图片描述
硬盘需要磁片快速旋转,磁头上下移动才能读取数据,相对于内存直接从芯片中读取慢很多
在这里插入图片描述

(二)程序执行的过程

在这里插入图片描述

  1. 首先程序执行的过程中主要是靠CPU
  2. 程序运行执行前是保存在硬盘中的,程序内部存储的是机器代码010
  3. 程序运行时CPU会把程序复制到内存中
  4. CPU执行内存中的程序代码

python程序怎么运行呢?
在这里插入图片描述

  1. python是解释型语言,python程序在运行时,CPU会把解释器加载到内存中
  2. 解释器根据语法规则,从上到下让CPU翻译python程序中的代码
  3. CPU执行的是翻译后的机器代码010

(三)程序的作用

程序的作用就是提供数据处理的能力

  • 新闻软件 提供的新闻内容、评论… 是数据
  • 电商软件 提供的商品信息、配送信息… 是数据
  • 运动类软件提供的运动数据… 是数据
  • 地图类软件 提供的 地图信息、定位信息、车辆信息… 是数据
  • 即时通讯软件 提供的 聊天信息、好友信息… 是数据
3.1 思考问题一

QQ程序的启动过程

QQ在运行之前,是保存在硬盘中的
运行之后,QQ程序就会被加载到内存中了

在这里插入图片描述

3.2 思考问题二

QQ程序的登录过程

2.1 读取用户输入的QQ号码
2.2 读取用户输入的QQ密码
3.3 将QQ号码和QQ密码发送给腾讯的服务器,等待服务器确认用户信息

在这里插入图片描述

第八章:变量的格式化输出

Python 输出主要包括标准化输出格式化输出换行输出换行输出更换间隔字符输出

(一)标准化输出

Python 编程中 print 的用法是输入 print(),括弧中可以是数字、变量、字符串、列表、元组合字典。
需要注意的是:
① print 一定要全部小写;
② print 后边的括弧要在英文状态输入。

print("Hello World")   # 可以是字符串
print(7)   # 可以是数字
a = 4   # 可以是变量
b = 8 
print(a)   # 可以是变量
print(a+b)  # 可以是数字的运算
print("输出的数字为:", a)  # 字符串和变量的组合
print("My lucky number is", " 6 ")  # 字符串和数字的组合

(二)格式化输出(%)

作用:输出文字信息的同时,一起输出数据,就需要使用到格式化操作符

% 表示格式化字符串的开始 叫做格式化操作符
  包含%的字符串,叫做格式化字符串
  不同的字符和%连用,表示不同类型数据使用不同的格式化字符

在这里插入图片描述
语法格式如下

print("%格式化字符串 + 其他输出内容" % 变量1)
print("%格式化字符串 + 其他输出内容" % (变量1,变量2...))
number = 6
print("My lucky number is %d" % number)

实例

price = float(input("请输入苹果的价格"))
weight = float(input("请输入苹果的重量"))
money = price * weight
print(money)
# %.2f表示字符串保留小数点后两位  同理%6d表示整数位数保持6位 %06d表示位数不够用0填充
print("苹果单价是 %.2f 元/斤,%.2f 斤的苹果需要支付 %.2f元" % (price, weight, money))

在这里插入图片描述
(2)转换标志:-表示左对齐,+表示在转换值之前空白字符)表示正数之前保留要加上正负号空格;0表示转换值若位数不够则用0填充。示例

#指定占位符宽度(左对齐)
2 >>> print ("Name:%-10s Age:%-8d Height:%-8.2f" % ("Aviad",25,1.83))
Name:Aviad Age:25 Height:1.83

#指定占位符(若位数不够则用0填充
>>> print ("Name:%-10s Age:%08d Height:%08.2f" % ("Aviad",25,1.83))
>Name:Aviad Age:00000025 Height:00001.83

(3)点**.**后跟精度值: 如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是则从后面的元组中读取字段宽度或精度

>>> print ("His height is %f m"%(1.83))
>His height is 1.838098 m
>>> print ("His height is %.2f m"%(1.83))
His height is 1.83 m
>>> print ("The String is %.2s"%("abcd"))
The String is ab
# 用*从后面的元组中读取字宽度或精度,第1个参数表示小数点后取多少位,2表示1.83这个字符保留小数点后两位
>>> print ("His height is %.*f m"%(2,1.83))
His height is 1.83 m

格式化字符串练习题

需求
1.定义字符串变量name,输出 我的名字叫 小明,请多多关照!
2定义整数变量student_no,输出我的学号是000001
4.定义一个小数scale,输出数据比例是10.00%
name = "小明"
student_no = 1
scale = 10
print("我的名字叫 %s,请多多关照!,我的学号是 %06d,数据比例是%.02f%%" % (name, student_no,scale))

(三)格式化输出(format)

基本语法是通过 {} 和 : 来代替以前的 %
语法格式为:“{}”.format() format参数下标是从0开始的
format 函数可以接受无限个参数,位置可以不按顺序

3.1 不设置指定位置,按默认顺序
print("{} is a beautiful {}!".format("Beijing","city"))
Beijing is a beautiful city!
3.2 设定指定位置 0 代表Beijing 1代表 city
print("{0} is a beautiful {1}!".format("Beijing", "city"))
print("{1} is a beautiful {2}!".format("Tianjin","Beijing", "city"))  # 按照位置参数显示具体的值
3.3 设置位置参数名称
print("{name1} is a beautiful {name2}!".format(name1="Beijing", name2="City"))
3.4 混合使用

不可以索引和默认顺序混合使用,否则会报错

#可以通过索引,参数名混合进行匹配
print("{0} is a beautiful {name}!".format("Beijing", name="city"))
#可以通过默认顺序和参数名混合进行匹配,但命名参数必须写到最后
print("{} is a beautiful {name}!".format("Beijing", name="city"))
3.5 通过对象的属性匹配参数
class Names:
    Name1 = "Beijing"
    Name2 = "city"

str1 = "{names.Name1} is a beautiful {names.Name2}!".format(names=Names)
print(str1)
3.6 引用参数部分
str1 = "The first letter of '{word}' is '{word[0]}'.".format(word="hello")
print(str1)
# The first letter of 'hello' is 'h'.
3.7 通过字典设置参数
# 匹配字典中的参数
dict = {"name1": "Beijing", "name2": "city"}
str1 = "{name1} is a beautiful {name2}!".format(**dict)
print(str1)

# 执行以上代码,输出结果为:
Beijing is a beautiful city!
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))
3.8 通过列表索引设置参数
list = ["Beijing", "city"]  #① 匹配列表中的参数
str1 = "{} is a beautiful {}!".format(*list)
str2 = "{1} is a beautiful {0}!".format(*list)
print(str1)
print(str2)
# 执行以上代码,输出结果为:
Beijing is a beautiful city!
city is a beautiful Beijing!
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的
3.9 数字和小数格式化语法
  • 使用冒号来规范显示语法的显示格式
  • ^, <, > 分别是居中、左对齐、右对齐,后面带宽度
  • : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
  • 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
  • b、d、o、x 分别是二进制、十进制、八进制、十六进制。

① 保留小数位数

str1 = "π is {:.2f}.".format(3.1415926)  #保留两位小数
print(str1)

② 给数字加千位符

str1 = "{:,}".format(900000000)
print(str1)

③ 进制的转换

test1 = "{:b}".format(4)     # 将数字4转换为二进制
print(s1)
test2 = "{:o}".format(3)     # 将数字3转换为八进制
print(s2)      
test3 = "{:x}".format(2)    # 将数字2转换为十六进制
print(test3) 
3.10 格式的处理

通过<kbd> :数字 </kbd>指定转换后的字符串长度,不足的部分用空格补充:

s = "{:2}b".format('a')
print(s) 
# 如果指定的长度小于参数的长度,按照原参数匹配
s1 = "{:2}World".format('Hello')
print(s1) 
执行以上代码,输出结果为:
a b
HelloWorld
3.11 字符的填充

可通过 <kbd> :符号^数字 </kbd> 进行字符串的填充,其中数字为填充后的字符串总长度:

s = "{:*^10}".format('Hello')
print(s)
s = "{:-^20}".format('aaaaaaa')
print(s)

执行以上代码,输出结果为:

**Hello***
-------aaaaaaa-------
  • 此外我们可以使用大括号 {} 来转义大括号,如下实例:
print ("{} 对应的位置是 {{0}}".format("runoob"))

在这里插入图片描述
格式化字符串练习题

需求
1.定义字符串变量name,输出 我的名字叫 小明,请多多关照!
2定义整数变量student_no,输出我的学号是000001
4.定义一个小数scale,输出数据比例是10.00%
name = "小明"
student_no = 1
scale = 10
print("我的名字叫 {name},请多多关照!,我的学号是 {student_no},数据比例是{scale}" fomat (name, student_no,scale))

(三)f-string 格式化字符串

f-string 格式化字符串以 f 开头,后面紧跟着字符串,能隔有空格,否则会报错,字符串中的表达式用大括号 {} 占位符包起来,它会将变量或表达式计算后的值替换进去

name = 'Runoob'
print(f'Hello {name}')  # 替换变量
print(f'{1+2}')         # 使用表达式
w = {'name': 'Runoob', 'url': 'www.runoob.com'}
print(f'{w["name"]}: {w["url"]}')

a = 10
b = 20
c = 30
print(f"b={b}, c={c}, a={a}")
# 上面的代码等效于:
print("b={}, c={}, a={}".format(20, 10, 30))
执行以上代码,输出结果为:

b=20, c=30, a=10
b=20, c=10, a=30

(四)不换行输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=“”,比如:

print("我")
print("爱", end="")
print("你")

(五)换行输出

print 默认输出是换行的,此外,在变量末尾加上 end=“\n” 可以在多个 print 函数的输出结果中实现换行,比如:

print("我")
print("爱", end="")
print("你", end="\n")
print("们")

转义字符 \n 可以在 print 一次性输出的字符串中间换行,比如:

print("aaaaaaa---------")
print("aaaaaaa\n---------")
# 执行以上代码,输出结果为:
aaaaaaa---------
aaaaaaa
---------

可以借助 for 循环和 while 循环实现换行输出,比如:

for 循环实现换行输出

a = "hello"
for i in a:
    print(i)
# while 循环实现换行输出
j = 0
while j <= 4:
    print(a[j])
    j += 1

(六)实现水平制表符输出

在变量末尾加上 end=“\t” 可以在多个 print 函数的输出结果中实现水平制表符,比如:

print("我", end="\t")
print(end="")
print("你")
# 执行以上代码,输出结果为:
我	你

转义字符 \t 可以在 print 一次性输出的字符串中间实现水平制表符,比如:

print("999999999\t---------")
# 执行以上代码,输出结果为:
999999999	---------

(七)更换间隔字符输出

默认情况下,print() 函数一次性输出的两个字符串使用空格分隔,在变量末尾加上参数 sep =“” 可以修改间隔字符,比如:

print("www", "runoob", "com")
print("www", "runoob", "com", sep=".")
print("www", "runoob", "com", sep="/")

执行以上代码,输出结果为:
wwwrunoobcom
www.runoob.com
www/runoob/com

第九章:判断语句

直白一点就是条件判断语句,符合条件的才会执行,Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false

(一)if判断语句基础版本

语法格式

if 要判断的条件:
	条件成立时,执行这行内容
	......

注意:代码的缩进为一个 tab 键,或者4个空格–建议使用空格。在Python 开发中,Tab 和空格不要混用!
在这里插入图片描述

1.1 条件判断练习题

需求
1定义一个整数变量记录年龄
2.判断是否满18 岁(>=)
3.如果满18岁,允许进网吧嗨皮

age = 21
if age >= 18:
# if语句和它下面的缩进语句是一个整体,条件成立才会执行缩进部分,不成立直接跳过整个代码块
    print("成年了允许进入网吧")
# 无论条件语句是否成立,这句都会执行
print("这句话什么时候执行")
1.2 不满足条件的判断语句

上面说条件才会执行缩进语句,不满足语句的话可以使用else,if 和else 语句以及各自的缩进部分共同是一个 完整的代码块

语法格式:

if 要判断的条件:
	条件成立时,执行这行内容
else:
	条件不成立时,执行这行内容
1.3 条件判断练习题

需求
1定义一个整数变量记录年龄
2.判断是否满18 岁(>=)
3.如果满18岁,允许进网吧嗨皮
4.不满足回家写作业

age = 15
if age >= 18:
    print("成年了允许进入网吧")
else:
	print("不想挨打就回家写作业")

(二)if判断语句进阶版

语法格式:

if 要判断的条件1:
	条件1成立时,执行这行内容
elif 条件2:
	条件2成立时,执行这行内容
elif 条件3:
	条件3成立时,执行这行内容
else:
	以上条件都不成立时,执行这行内容
	
2.1 elif判断语句练习题
holiday_name ="平安夜"
if holiday_name =="情人节":
	print("买玫瑰")print("看电影")
elif holiday_name =="平安夜":
	print("买苹果")print("吃大餐")
elif holiday_name =="生日":
	print("买蛋糕")
else:
	print("每天都是节日啊.....")

(三)if判断语句高级版

if语句嵌套
elif的应用场景是:同时判断多个条件,所有的条件是平级的
在开发中,使用if进行条件判断,如果希望 在条件成立的执行语句中再增加条件判断,就可以使用if 的嵌套
if 的嵌 的应用场景就是:在之前条件满足的前提下,再增加额外的判断if 的嵌套的语法格式,除了缩进之外和之前的没有区别
语法格式如下:

if 条件 1:
	条件 1 满足执行的代码
	if 条件 1 基础上的条件 2:
	条件 2满足时,执行的代码
	#条件 2不满足的处理
	else:
		条件 2 不满足时,执行的代码
# 条件 1不满足的处理else:
	条件1 不满足时,执行的代码
3.1 嵌套语句练习题

需求

  • 1定义布尔型变量表示是否有车票has_ticket
  • 2.定义整型变量 knife_length 表示刀的长度,单位:厘米
  • 3.首先检查是否有车票,如果有,才允许进行 安检
  • 4.安检时,需要检查刀的长度,判断是否超过 20 厘米
  • 5如果超过 20 厘米,提示刀的长度,不允许上车如果不超过20厘米,安检通过
  • 6.如果没有车票,不允许进门
has_ticket = True
knife_length = 20
if has_ticket:
    print("有车票可以进行安检")
    if knife_length < 20:
        print("刀的长度小于20cm,可以上车")
    else:
        print("刀的长度大于等于20cm,不可以上车")
else:
    print("没有车票不可以进行安检")
3.2 判断语句综合练习题
  • 目标
  • 1.强化多个条件的逻辑运算
  • 2体会import导入模块(“工具包”)的使用
  • 需求
  • 1.从控制台输入要出的拳–石头 (1)/剪刀 (2) /布 (3)
  • 2.电脑 随机出拳-先假定电脑只会出石头,完成整体代码功能
  • 3.比较胜负
  • 进阶需求
  • 1.从用户输入要出的类型–石头 (1)/剪刀 (2) /布 (3)
  • 2.电脑随机出拳完成整体代码功能
  • 3.比较胜负
while True:
    try:
        preson = int(input(">>>>>"))
    except ValueError as e:
        print(e)
        continue

    if 1 <= preson <= 3:
        computer = random.randint(1, 3)  # 石头(1) /剪刀 (2) /布 (3)
        if computer == 1:  # 平局  电脑胜   玩家胜
            if preson == 1:
                print("平局")
            if preson == 2:
                print("电脑胜")
            if preson == 3:
                print("玩家胜")
        elif computer == 2:
            if preson == 1:
                print("玩家胜")
            if preson == 2:
                print("平局")
            if preson == 3:
                print("电脑胜")
                continue
        else:
            if preson == 1:
                print("电脑胜")
            if preson == 2:
                print("玩家胜")
            if preson == 3:
                print("平局")
    else:
        print("输入错误,重新输入")
        continue
3.3 简化版写法
import random
while True:
    try:
        person = int(input("请输入你要输入的石头(1) /剪刀 (2) /布 (3)"))
    except ValueError as e:
        print(e)
        continue
    if 1 <= person <= 3:
        computer = random.randint(1,3)
        if person == computer:
            print("平局")
        elif (person == 1 and computer ==2) or (person == 2 and computer ==3) or (person ==3 and computer ==1):
            print("玩家胜")
        else:
            print("电脑胜") 
3.4 python随机数的使用

random.randint(a,b) 生成指定范围内的整数

 import random  #导入随机数模块工具包
 # 导入模块后,可以直接在 模块名称后面敲一个然后按Tab 键,会提示该模块中包含的所有函数
 
 computer = random.randint(a,b)  #生成指定范围内的整数 
 random.randint(1220)#生成的随机数n: 12 <= n <= 20
 random.randint(2020)# 结果永远是 20
 random.randint(2010)# 该语句是错误的,下限必须小于上限

(四)if判断语句改版

assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行;反之,Python 解释器会报 AssertionError 错误。assert 语句通常用于检查用户的输入是否符合规定,还经常用作程序初期测试和调试过程中的辅助工具,可以有效预防 bug 的发生,提高程序的健壮性,

语法格式为:

assert 条件表达式
代码块

注意:①“条件表达式”后不用加冒号 : ②“代码块”前不用缩进。

a = int(input("请输入考试分数:"))
assert 0 <= a <= 100                           # 断言数学考试分数是否位于正常范围内         
print("你的考试成绩为:", a)                   # 只有当考试成绩位于 [0,100]范围内,程序才会继续执行

(五)三元表达式

表达式(1)为 True 执行语句 if 条件表达式(1else 表达式(1)为 False 执行语句

示例代码:

age = 20

cn = "成年" if age >= 18 else "未成年"
print(cn)

返回多个条语句
可以编写如下代码结构,在条件表达式中返回多条语句。

age = 20

cn = "成年", "大于18" if age >= 18 else "未成年"
print(cn)

在函数内部使用三元表达式
有些简单的判定逻辑,可以直接使用三元表达式简化,例如判断传入参数是否为偶数。

def even_num(num):
    return True if num % 2 == 0 else False

第十章:循环语句

循环就是让代码一直重复的执行下去
python代码中的循环语句有两种1.for 2.while

(一)程序的三大流程

在程序开发中,一共有三种流程方式

  • 顺序 – 从上向下,顺序执行代码
  • 分支-- 根据条件判断,决定执行代码的分支
  • 循环–让特定代码重复执行
    在这里插入图片描述

(二)while循环语句

循环的作用就是让 指定的代码重复的执行
while 循环最常用的应用场景就是让执行的代码按照指定的次数重复执行

2.1while循环的定义

while循环语法:

初始条件设置--通常是重复执行的计数器
while 条件(判断 计数器 是否达到 目标次数):
	条件满足时,做的事情1
	条件满足时,做的事情2
	条件满足时,做的事情3
	...省略...
	处理条件(计数器+1
需求--打印5遍Hello Python
思考--如果要求打印 100 遍怎么办?
i = 1
while i < 100:
    print("Hello World!")
    i+=1
print("一共输出 %d 次Hello World!" % i)
2.2 Python中的计数方法

常见的计数方法有两种,可以分别称为:

  • 自然计数法(从1开始)–更符合人类的习惯
  • 程序计数法(从0开始)–几乎所有的程序语言都选择从0开始计数

因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则循环 的计数都从0开始

循环计算

在程序开发中,通常会遇到利用循环重复计算的需求,遇到这种需求,可以

  • 1在while上方定义一个变量,用于存放最终计算结果
  • 2在循环体内部,每次循环都用最新的计算结果,更新之前定义的变量 需求

计算0~100之间所有数字的累计求和结果

i = 0
result = 0
while i <= 100:
    print(i)
    result += i
    i+=1
print(result)

计算0~ 100之间所有偶数的累计求和结果

i = 0
result = 0
while i <= 100:
    if i % 2 ==0:
        print(i)
        result += i
    i+=1
print(result)
i = 0
result = 0
while i <= 100:
    if i % 2 !=0:
        print(i)
        result += i
    i+=1
print(result)

2.3 break和continue

break 语句可以跳出 for 和 while 的循环体,就是循环整个终止,任何对应的循环 else 块将不执行。

continue 语句只是跳过本次循环块中的剩余语句,然后继续进行下一轮循环。

i = 0
while i <= 10:
    if i ==5:
        print(i)
        break    
    i+=1
print(result)
i=0
while i < 10:
    # continue 某一条件满足时,不执行后续重复的代码
    # i== 3
    if i == 3:
    # 注意: 在循环中,如果使用 continue 这个关键字
    # 在使用关键字之前,需要确认循环的计数是否修改
    # 否则可能会导致死循环
        i += 1
        continue
    print(i)
    i += 1

① 使用 break 跳出当前循环体之后,该循环后的 else 代码块也不会被执行。但是,如果将 else 代码块中的代码直接放在循环体的后面,则该部分代码将会被执行。
对于嵌套的循环结构来说,break 语句只会终止所在循环体的执行,而不会作用于所有的循环体

2.4 pass 语句

Python 中的 pass 是空语句,pass 不做任何事情,表示一个占位符,一般用作占位语句,能够保证程序的代码结构正确,使用 pass 语句比使用注释更加优雅。

while True:
	pass
2.5 while…else… 循环

如果 while 后面的条件表达式判定为 False 时,则执行 else 的代码块,语法格式如下:

while 条件表达式:
    代码块(循环体)
else:
    代码块
# 计算 1-100 的和
sum_i = 0
i = 0
while 0 <= i <= 100:
    sum_i += i
    i += 1
else:
    print(end="\n")
    print(sum_i)
2.4 range 函数

range 函数是 Python 中的内置函数,用于生成一系列连续的整数,一般用于 for 循环体中,range 函数的一般语法格式为:range(start, stop, step)

for x in range(1, 8, 2):
    print(x)
2.5 while循环嵌套

while 嵌套就是:while 里面还有while

while 条件 1:
	条件满足时,做的事情1
	条件满足时,做的事情2
	条件满足时,做的事情3
	...(省略)...
	while 条件 2:
		条件满足时,做的事情1
		条件满足时,做的事情2
		条件满足时,做的事情3
		...(省略)...
			处理条件 2
处理条件 1

练习题:用套打印小星星
需求
在控制台连续输出五行*,每一行星号的数量依次递增

i = 1
while i <= 5:
	print("*" * i)
	i+=1
row = 1
while row <= 5:
    cow = 1
    while cow <= row:
        print("*", end="")
        cow += 1
    print("")
    row += 1

九九乘法表

i = 1
while i < 10:
    j = 1
    while j <= i:
        print("%d * %d = %d" % (j, i, j*i),end="\t") #制表符的功能是在不使用表格的情况下在垂直方向按列对齐文本
        j += 1
    print("")
    i += 1

知识点 对print函数的使用做一个增强

在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加:
end="",其中""中间可以指定 print 函数输出内容之后,继续希望显示的内容

语法格式如下:
向控制台输出内容结束之后,不会换行print("*",end="")
单纯的换行print("")
i = 1
while i <= 5:
	print("*",end="")
	i+=1
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while b < 1000:
    print(b, end=',')
    a, b = b, a+b

(三)for 循环

Python for循环可以遍历任何序列的项目,变量序列可以是字符串、列表、元组、字典和集合

for 变量 in 集合:
 	循环体代码
for letter in 'Python':     # 第一个实例
   print("当前字母: %s" % letter)
for num in range(10,20): 
	 print(num)
3.1 for…else… 循环

for…else… 语句用于在循环结束后执行一段代码,语法格式为:

for 迭代变量 in 序列:
    代码块(循环体)
else:
    代码块
for num in range(10,20):  # 迭代 10 到 20 (不包含) 之间的数字
   for i in range(2,num): # 根据因子迭代
      if num%i == 0:      # 确定第一个因子
         j=num/i          # 计算第二个因子
         print ('%d 等于 %d * %d' % (num,i,j))
         break            # 跳出当前循环
   else:                  # 循环的 else 部分
      print ('%d 是一个质数' % num)
3.2 while 循环和 for 循环的比较

(1)while 循环

① while 循环称之为“条件循环”,循环次数取决于条件何时变为假;

② while 循环适合循环次数是未知的操作。

(2)for 循环

① for 循环称之为"取值循环",循环次数取决 in 后包含的值的个数;

② for 循环适合循环次数是已知的操作。