概述
Python从入门到入土(2)
一、if语句
结构:
if语句
if 条件:
语句1 # if语句通过缩进表示控制范围
语句2
……
else:
语句1
语句2
……
同时满足多个条件,用and,相当于C的&&
满足多个条件之一,用or,相当于C的||
if-elif-else语句
if 条件:
语句
elif 条件: # 当if不成立时,进而判断elif成不成立。elif可以有0个或多个。
语句
else: # 当上面的if/elif不成立时,进入else语句
语句
以小玉家的电费为例:
# coding=gbk
dianliang = int(input()) # input()读入的是字符串str,需要用int()来转换成整数类型
if dianliang <= 150:
dianfei = dianliang * 0.4463
elif dianliang <= 400: # elif 表示 上一个if不成立 并且这一个if成立
# 也就是说 dianliang > 150 并且 dianliang <= 400
# 能走到这里,就表示dianliang > 150
dianfei = 150*0.4463 + (dianliang-150)*0.4663
else: # 上一个if 或者elif不成立 才进入else
# 就是 不满足dianliang<=400 也就是dianliang>400
dianfei = 150*0.4463 + 250*0.4663 + (dianliang-400) * 0.5663
print("%.1f" % dianfei)
二、列表
0 列表是什么
1 列表的创建
a = [1,2,3]
b = [1, 3.14, “niubi”, [3,4,5] ]
中括号表示列表,元素之间用逗号隔开
列表可以包含多种类型
c = [ ] 创建一个空的列表
2 运算符(下标 + * in)
- 元素调用——下标运算符
a[0]表示a的第一个元素,a[3]表示a的第四个元素。注意:列表下标从0开始 - 列表+列表 拼接列表
a=[1,2,3,4,5]
b=[1,2,3,10,20]
c=a+b
c -> [1, 2, 3, 4, 5, 1, 2, 3, 10, 20]
- 列表*正整数 拼接多遍
a*3 -> [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
- in 和 not in
元素 in 列表 —— 判断元素是否在列表里面,在里面,返回True
元素 not in 列表 —— 判断元素是否不在列表里面
a=[1,2,3,4,5,[6,7]]
3 in a -> True
8 in a -> False
10 not in a -> True
5 not in a -> False
6 in a -> False
3 列表添加元素的方法
(1)L.append(x):从尾部添加元素x
a=[1,2,3,4,5]
a.append(6)
a -> [1,2,3,4,5,6]
(2)L.insert(index,x): 在index位置之前插入元素x
a=[1,2,3,4,5]
a.insert(3,"hello")
a.insert(0,3.14)
a -> [3.14, 1, 2, 3, 'hello', 4, 5]
a.insert(10000,666) # 如果index超过了列表的大小,则会加到末尾
a -> [3.14, 1, 2, 3, 'hello', 4, 5, 666]
(3)L.extend(b): 把列表b拼接到L后面
a=[1,2,3,4,5]
b=["niubi","dalao"]
a.extend(b) # 等价于 a = a + b
a.extend([6,7])
a -> [1,2,3,4,5,"niubi","dalao",6,7] # 可以用于在尾部添加多个元素
4 列表删除元素
列表跟传统语言的数组不同的地方:
列表可以动态地增加和减少元素,可以包含多种类型的对象
(1) L.remove(x) : 按值删除——删除从左往右第一个x
a=[1,2,3,4,5,3,4,4,4,4,4]
a.remove(3)
a -> a=[1,2,4,5,3,4,4,4,4,4]
如果要删除所有的4
a=[1,2,3,4,5,3,4,4,4,4,4]
while 4 in a:
a.remove(4)
(2) L.pop(index):按索引删除,并返回被删除的值,默认弹出最后的值
a=[1,2,3,4,5,"niubi",[2,3]]
x = a.pop(3) # x = 4
(3)del语句 (delete)
函数 print() input()
方法 在.后面的 对象.方法名() L.append(x)
语句/关键字 if
5 其他函数和方法
(1)max()、min() 函数
max函数用于求最大值,min函数用于求最小值。
如果是数值组成的列表,则返回最大、最小的数值。
s = [8.88, 5, 3.14, 666, 520, 1314]
max(s) -> 1314
min(s) -> 3.14
max([-7,-6,-5]) -> -5
max也可以对若干个数进行排序,比如
max(3,1,2,4,5) -> 5
max(“apple”,“appear”) -> “appear”
如果是字符串组成的列表、列表组成的列表,则返回字典序最大、最小的对象。
字典序举例:app < apple < appear < bear
max(["c","c++","python","matlab","java","peal","php","javascript"]) -> "python"
max([[1,2],[2,3],[3,0]]) -> [3,0] # 不建议写这种代码
混合类型会报错!
(2)L.sort()方法:排序
如果都是数值型,调用sort方法会从小到大排序。
设置参数reverse=True,会从大到小排序。
s = [8.88, 5, 3.14, 666, 520, 1314]
s.sort()
print(s) -> [3.14, 5, 8.88, 520, 666, 1314]
s.sort(reverse=True) # 修改reverse参数
print(s) -> [1314, 666, 520, 8.88, 5, 3.14]
# 从大到小排序也可以
s.sort()
s.reverse()
如果都是字符串类型,则会按字典序从小到大排序。
languages = ["c","c++","python","matlab","java","peal","php","javascript"]
languages.sort()
print(languages) -> ['c', 'c++', 'java', 'javascript', 'matlab', 'peal', 'php', 'python']
(3)L.reverse()方法 :将列表反转
(4)L.count(x) 方法:数一数有几个x
6 列表切片——获取一个子列表
a = [5,4,3,2,1]
a[2] -> 3 # 获取的是单个元素
a[2:4] -> [3,2] # 获取[2,4) 即[2,3]范围内的子列表
a[1:5] -> [4,3,2,1] # 获取[1,5) 即[1,4]
a[x:y] 获取的是a下标在[x,y)范围内的一个子列表
也可以省略一个或两个范围
a[2:] #a[2]以及a[2]之后的所有元素的子列表,相当于[2,+无穷)
a[:3] #a[2]及a[2]之前的所有元素的子列表,相当于[0,3),也就是[0,2]范围内的元素
a[:] #a本身
负数下标a[-N]表示“倒数第N个元素”,是倒着从-1开始的
a[-N]就相当于a[len(a)-N]
所以负数下标也可以用来切片
7 列表复制
三、for和range()
- for 变量 in 列表:
循环体
每次循环,变量被赋值为列表中的一个元素
s = 0
a = [3,4,5,1,2]
for i in a:
print(i) # 第一次循环i=3,第二次循环i=4……共循环5次
s += a # 循环体用缩进来表示
2. range() 函数 用于生成一个数值列表
range(2,8) : 返回[2,3,4,5,6,7]的range对象,也就是[2,8) 之间的整数的列表
如果想获得 [2,8)之间的列表
需要用list()来转换
例如
b = list(range(2,8))
b -> [2,3,4,5,6,7]
range的第一种形式:
range(start, stop, step=1) : start是起始位置,stop是结束位置,step是步长(每次增加的数量)默认为1
三个参数都只能是整数
range(2,8,2) 获得了[2,4,6]的一个range对象
list(range(2,8,2)) -> [2,4,6] (列表)
list(range(-100,100,5)) -> [-100,-95,…,95]
list(range(10,-10,-1)) -> [10,9,8,…,-8,-9]
range的第二种形式
range(10) -> [0,1,2,3,…,9]的一个range
range(x) ->[0,x) 的一个range,相当于range(0,x)
只写一个数,相当于规定了stop,并且start=0
也就是说,
range(1,10) 两个参数,相当于start=1,end=10,step=1, [1,2,3,…9]
range(2,101,2) 三个参数,相当于start=2,end=101,step=2 [2,4,6,…100]
range(10) 一个参数,相当于start=0,end=10,step=1 [0,1,2,…9]
3. for & range
for i in range(1,101):
四、输入输出-ex
之前一节的笔记提到:
s = input() 读入一行,s是字符串类型
a = int(input()) 读入一行,然后转换成int型
b = float(input()) 读入一行,然后转换成float型
如果是空格隔开的2个数,比如 3 4
可以用
a,b = input().split() 先读入一个字符串,然后以空格隔开,分别存到a,b中
s.split() 是字符串的一个方法,把字符串以空格隔开,生成一个列表,每个元素是字符串被空格隔开的一部分,并且每个元素都是字符串(str)类型
“2 3 4 666 888”.split() -> [‘2’, ‘3’, ‘4’, ‘666’, ‘888’]
例题1:P5726 打分
n = int(input()) # n代表评委的个数
# fen = input().split() # fen是一个列表,每一个元素是字符型的分数值 例如['9', '5', '6', '8', '9']
# # 但我们想要的是整数型元素构成的的列表 例如[9, 5, 6, 8, 9]
# # 方法1:
# fen_int = []
# for i in fen:
# fen_int.append(int(i))
# # 方法2:
fen = list(map(int, input().split()))
# input()读入一行字符串 "9 5 6 8 9"
# 用split()方法 按照空格进行分割,每一个部分变为一个元素,存进列表,类型为字符型 ['9', '5', '6', '8', '9']
# map:把input().split()获得的“字符串组成的列表”映射为整数,也就是每个元素都化成整数 map([9, 5, 6, 8, 9])
# 再用list()强制转换为列表 [9, 5, 6, 8, 9]
s = sum(fen) - max(fen) - min(fen) # s存的是去掉一个最高和最低分,所有分数的和
average = s / (n-2) # 只需要求n-2个分数的平均值
print("%.2f" % average) # 保留两位小数进行输出
例题2:P1427 小鱼的数字游戏
a = input().split()
# 输入“3 65 23 5 34 1 30 0”
# a会变成一个列表:['3', '65', '23', '5', '34', '1', '30', '0']
# 第一种方法
a.reverse()
a.remove('0') # a.remove('0')会删除列表中第一个'0'
# 也可以用a.pop(0)表示删除a[0],因为此时知道删除的是第几位
for i in a: # 对a进行循环 第一次i=a[0],第二次i=a[2]... 每次i 等于a中的一个元素
print(i, end=' ') # 因为print默认会换行,题目要求用空格隔开,所以修改end参数
# # 第二种方法
# length = len(a)
# for i in range(length-2, -1, -1): # [length-2, -1) 每次-1 也就是[length-2,0] i分别是[length-2,length-3,...,1,0]
# print(a[i], end=' ') # i 实际上循环的是元素在列表中的位置,也就是下标
最后
以上就是阳光流沙为你收集整理的Python入门到入土(2)Python从入门到入土(2)的全部内容,希望文章能够帮你解决Python入门到入土(2)Python从入门到入土(2)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复