流程控制,字符串,列表

一、流程控制
1.

if 要判断的条件:
        条件成立时,要做的事情
  if 条件:
        满足条件时的操作
    else:
        不满足条件时的操作
# python里的条件判断语句  if /  if else / if elif elif else
# python里不支持  switch...case 条件语句


# if 条件判断:
#    条件成立时,执行的代码

# age = int(input('请输入你的年龄:'))
# if age < 18:  # 字符串和数字做比较运算规则: == 结果是False,!= 结果是True,其他比较运算会报错
#     print('未满十八岁,禁止入内')


# if...else语句
# if 判断条件:
#    条件成立时执行的代码
# else:
#    条件不成立时执行的代码

age = int(input('请输入你的年龄:'))
if age < 18:
    print('赌博是不好的哟,好好学习,天天向上')
else:
    # if的条件不满足时执行的代码
    print('澳门首家线上赌场上线了!')

在这里插入图片描述

  if xxx1:
        事情1
    elif xxx2:
        事情2
    elif xxx3:
        事情3

当xxx1满足时,执行事情1,然后整个if结束
当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束 当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if 结束

score = float(input('请输入您的成绩:'))

```python
# 多个 if 语句,语句和语句之间,不存在关联
# if 60 > score >= 0:
#     print('你个垃圾')
#
# if 80 > score >= 60:
#     print('一般般')
#
# if 90 > score >= 80:
#     print('还不错')
#
# if 100 >= score >= 90:
#     print("好棒棒哟")


# 一个 if..elif 语句
if 60 > score >= 0:
    print('你个垃圾')
elif 80 > score >= 60:
    print('一般般')
elif 90 > score >= 80:
    print('还不错')
elif 100 >= score >= 90:
    print("好棒棒哟")
else:
    print('你肮脏,你作弊!')
        

在这里插入图片描述

4.if语句嵌套

if 条件1:

        满足条件1 做的事情1
        满足条件1 做的事情2

        if 条件2:
            满足条件2 做的事情1
            满足条件2 做的事情2

外层的if判断,也可以是if-else
内层的if判断,也可以是if-else
根据实际开发的情况,进行选择
# if 语句里再嵌套if

# python语言里,使用强制缩进来表示语句之间的结构
ticket = input('是否买票了?Y/N')
if ticket == 'Y':
    print('买票了,可以进站')
    safe = input('安检是否通过?Y/N')
    if safe == 'Y':
        print('安检通过了,进候车室')
    else:
        print('进站了,但是安检未通过')
else:
    print('没有买票,滚蛋')

5.猜拳游戏

import random

player = input('请输入:剪刀(0)  石头(1)  布(2):')

player = int(player)

# 产生随机整数:0、1、2 中的某一个
computer = random.randint(0,2)

# 用来进行测试
#print('player=%d,computer=%d',(player,computer))

if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)):
    print('获胜,哈哈,你太厉害了')
elif player == computer:
    print('平局,要不再来一局')
else:
    print('输了,不要走,洗洗手接着来,决战到天亮')

在这里插入图片描述
6.for. . . in 循环

# python里的for循环指的是for...in循环。和C语言里的for不一样
# for语句格式: for ele in iterable


# range 内置类用来生成指定区间的整数序列(列表)
# 注意: in 的后面必须要是一个可迭代对象!!!
# 目前接触的可迭代对象: 字符串、列表、字典、元组、集合、range
for i in range(1, 11):
    print(i)

# for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
#     print(x)
for y in 'hello':
    print(y)

# for m in 10: # in的后面必须是一个可跌打对象
#     print(m)


z = 0  # 定义一个变量,用来保存所有的数字之和
for j in range(1, 101):
    z += j
print(z)

二、字符串
1.字符串介绍
字符串可以理解为一段普通的文本内容,在python里,使用引号来表示一个字符串,不同的引号表示的效果会有区别。

字符串表示方式

    a = "I'm Tom"  # 一对双引号 
    b = 'Tom said:"I am Tom"'  # 一对单引号
    c = 'Tom said:"I\'m Tom"'  # 转义字符
    d = '''Tom said:"I'm Tom"'''  # 三个单引号
    e = """Tom said:"I'm Tom" """  # 三个双引号

小总结:

双引号或者单引号中的数据,就是字符串
如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符
使用三个单引号、双引号定义的字符串可以包裹任意文本
转义字符
转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分,使用\来表示一个转义字符。常见的转义字符以及它所代表的含义如下表:
转义字符 含义
\r 将当前位置移到本行开头
\n 将当前位置移到下一行开头
\t 用来表示一个制表符
\ 代表一个反斜线字符
’ 用来显示一个单引号
" 用来显示一个双引号

2.切片介绍
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
切片的语法:[起始:结束:步长],也可以简化使用 [起始:结束]

# 索引是通过下标取某一个元素
# 切片是通过下标去某一段元素

s = 'Hello World!'
print(s)

print(s[4])  # o 字符串里的第4个元素

print(s[3:7])  # lo W 包含下标 3,不含下标 7

print(s[:]) # Hello World! 取出所有元素(没有起始位和结束位之分),默认步长为1

print(s[1:]) # ello World! 从下标为1开始,取出 后面所有的元素(没有结束位)

print(s[:4])  # Hell 从起始位置开始,取到 下标为4的前一个元素(不包括结束位本身)

print(s[:-1]) # Hello World 从起始位置开始,取到 倒数第一个元素(不包括结束位本身)

print(s[-4:-1]) # rld 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身)

print(s[1:5:2]) # el 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)

print(s[7:2:-1]) # ow ol 从下标为7的元素开始(包含下标为7的元素),倒着取到下标为2的元素(不包括下标为2的元素) 

# python 字符串快速逆置
print(s[::-1])  # !dlroW olleH 从后向前,按步长为1进行取值

3.字符串的常见操作
①len函数可以获取字符串的长度。

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(len(mystr))  # 17 获取字符串的长度

在这里插入图片描述
②find查找
查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回-1.

语法格式:

S.find(sub[, start[, end]]) -> int
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.find('好风光'))  # 10 '好风光'第一次出现时,'好'所在的位置
print(mystr.find('你好'))  # -1  '你好'不存在,返回 -1
print(mystr.find('风', 12))  # 15 从下标12开始查找'风',找到风所在的位置试15
print(mystr.find('风光',1,10)) # -1 从下标1开始到12查找"风光",未找到,返回 -1

在这里插入图片描述
③rfind类似于find()函数,不过是从右边开始查找。

mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.rfind('好')) # 14

3.字符串运算符
①字符串和字符串之间能够使用加法运算符,作用是将两个字符串拼接成为一个字符串。例如:‘hello’ + 'world’的结果是 ‘helloworld’
②字符串和数字之间可以做乘法运算,结果是将指定的字符串重复多次。例如:‘hello’*2的结果是hellohello
③字符串和字符串之间,如果使用比较运算符进行计算,会获取字符对应的编码,然后进行比较。
除上述几种运算符以外,字符串默认不支持其他运算符。

三、列表
1、列表的格式
定义列的格式:[元素1, 元素2, 元素3, …, 元素n]

变量tmp的类型为列表

tmp = ['xiaoWang',180, 65.0]

列表中的元素可以是不同类型的
2、使用下标获取列表元素

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
print(namesList[0])
print(namesList[1])
print(namesList[2])

在这里插入图片描述
3.对列表进行增加元素
①append会把新元素添加到列表末尾

 #定义变量A,默认有3个元素
    A = ['xiaoWang','xiaoZhang','xiaoHua']

    print("-----添加之前,列表A的数据-----A=%s" % A)

    #提示、并添加元素
    temp = input('请输入要添加的学生姓名:')
    A.append(temp)

    print("-----添加之后,列表A的数据-----A=%s" % A)

②insert(index, object) 在指定位置index前插入元素object

strs = ['a','b','m','s']
strs.insert(3,'h')
print(strs)  # ['a', 'b', 'm', 'h', 's']

③通过extend可以将另一个集合中的元素逐一添加到列表中

a = ['a','b','c']
b = ['d','e','f']
a.extend(b)
print(a)   # ['a', 'b', 'c', 'd', 'e', 'f'] 将 b 添加到 a 里
print(b)   # ['d','e','f'] b的内容不变
  1. 修改元素
    修改元素的时候,为指定的列表下标赋值即可。
#定义变量A,默认有3个元素
A = ['xiaoWang','xiaoZhang','xiaoHua']

print("-----修改之前,列表A的数据-----A=%s" % A)

#修改元素
A[1] = 'xiaoLu'

print("-----修改之后,列表A的数据-----A=%s" % A)

3.查找元素
●in(存在),如果存在那么结果为true,否则为false
●not in(不存在),如果不存在那么结果为true,否则false

#待查找的列表
nameList = ['xiaoWang','xiaoZhang','xiaoHua']

#获取用户要查找的名字
findName = input('请输入要查找的姓名:')

#查找是否存在
if findName in nameList:
    print('在列表中找到了相同的名字')
else:
    print('没有找到')

4.删除元素
▲del:根据下标进行删除
▲pop:删除最后一个元素
▲remove:根据元素的值进行删除
masters = [‘王昭君’, ‘甄姬’, ‘貂蝉’, ‘妲己’, ‘小乔’, ‘大乔’]

# 删除数据有三个相关的方法   pop   remove  clear
# pop 方法默认会删除列表里最后一个数据,并且返回这个数据
# pop还可以传入index参数,用来删除指定位置上的数据
x = masters.pop(3)
print(masters)  # ['王昭君', '甄姬', '貂蝉', '小乔', '大乔']

# remove用来删除指定的元素
masters.remove('小乔')
# masters.remove('妲己')  如果数据在列表中不存在,会报错
print(masters)

# 使用del 也可以删除一个数据
del masters[2]
print(masters)

# clear 用来清空一个列表
masters.clear()
print(masters)

# a = 100
# del a
# print(a)


tanks = ['亚瑟', '程咬金', '盾山', '张飞', '廉颇', '程咬金']
# 查询相关的方法
print(tanks.index('盾山'))  # 2
# print(tanks.index('庄周'))  如果元素不存在,会报错
print(tanks.count('程咬金'))  # 2
# in 运算符
print('张飞' in tanks)  # True
print('苏烈' in tanks)  # False

# 修改元素
# 使用下标可以直接修改列表里的元素
tanks[5] = '铠'
print(tanks)

流程控制,字符串,列表_第1张图片
5.列表的遍历

# 遍历: 将所欲的数据都访问一遍。遍历针对的是可迭代对象
# while循环遍历  / for...in 循环遍历
killers = ['李白', '兰陵王', '韩信', '赵云', '阿珂', '孙悟空']

# for...in循环的本质就是不断的调用迭代器的 next 方法查找下一个数据
for k in killers:
    print(k)

i = 0
while i < len(killers):
    print(killers[i])
    i += 1

流程控制,字符串,列表_第2张图片
6.列表的嵌套

import random

# 定义一个列表用来保存3个办公室
offices = [[],[],[]]

# 定义一个列表用来存储8位老师的名字
names = ['A','B','C','D','E','F','G','H']

i = 0
for name in names:
    index = random.randint(0,2)    
    offices[index].append(name)

i = 1
for tempNames in offices:
    print('办公室%d的人数为:%d'%(i,len(tempNames)))
    i+=1
    for name in tempNames:
        print("%s"%name,end='')
    print("\n")
    print("-"*20)

流程控制,字符串,列表_第3张图片

7.列表的复制

①使用列表的copy方法,可以直接将原来的列表进行复制,变成一个新的列表,这种复制方式是浅复制。
②除了使用列表的copy方法以外,Python还提供了copy模块来复制一个对象。copy模块提供了浅复制和深复制两种方式,它们的使用方式相同,但是执行的效果有一定的差异。
●浅拷贝是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容。
●深拷贝是对于一个对象所有层次的递归拷贝。

x = [100, 200, 300]

# x 和  y 指向了同一个内存空间,会相互影响
y = x  # 等号是内存地址的赋值

# 调用copy方法,可以复制一个列表
# 这个新列表和原有的列表内容一样,但是指向不同的内存空间
z = x.copy()

x[0] = 1

print(z)

# 除了使用列表自带的 copy 方法以外,还可以使用copy模块实现拷贝

import copy

a = copy.copy(x)  # 效果等价于 x.copy(),都是一个浅拷贝
# 深拷贝
# 切片其实就是一个浅拷贝
names1 = ['张三', '李四', '王五', '杰克']
names2 = names1[::]
names1[0] = 'jerry'
print(names2)

你可能感兴趣的:(流程控制,字符串,列表)