Python第三课

一:while循环

# 实现while循环实现 0-100 相加
i = 1
sum = 0
while i <= 100:

    sum = sum + i
    i += 1
print(sum)
'''
第一次循环 i = 1, sum = 0, --> sum = sum + i = 0 + 1, sum = 1,i = 1
第二次循环 sum = 1,i = 2,--> sum = sum + i = 1 + 2 = 3,sum = 3,i = 3
第三次循环 sum = 3,i = 3,--> sum = sum + i = 3 + 3 = 6,sum = 6,i = 4
...
第九十九次 sum = 4851,i = 99,--> sum = sum + i = 4051 + 99 = 4950,sum = 4950,i = 100
第一百次 sum = 4950,i = 100,--> sum = sum + i = 4950 + 100 = 5050,sum = 5050,i = 101
第一百零一次 不满足条件结束循环
'''

'''
随堂练习:
1、将0-100所有3的倍数相加
2、将0-100所有3的倍数相加 含有3的 相加
3、奇数排序思想:先判断十位数上的大小,再排个位数上的大小
46,37,42
37,46,42
37,42,46
使用奇数排序思想给上面三个数进行排序,从大到小 打印出来
a = 46,b = 37,c = 42
4、归并排序
a = 46,b = 37,  c = 42,d = 39
把ab放在一组 把cd放在一组
ab选出较大,cd选出较大值,然后 再把ac放在一起比较,选出谁是最大 打印出来
同样的方法 选出最小 打印出来
'''
# 第一题
print("===================")

# 将 0 - 100 所有3的倍数相加
i = 0
sum1 = 0
while i <= 100:
    if i % 3 == 0:
        sum1 += i
    i += 1
print(sum1)
print("===================")

# 将 0 - 100 所有3的倍数相加 含有3
i = 0
sum1 = 0
while i <= 100:
    if i % 10 == 3:
        sum1 += i
        if i == 33:
            print("1")
    if i / 10 == 3:
        sum1 += i
        if i == 33:
            print("2")
    i += 1
print(sum1)
print("===================")

# 基数排序
# 46, 37, 42

# 归并排序
def mergeSort(a, low, high):
    if low < high:
        mid = (high + low) // 2  # 取要排序的序列的中间位置
        mergeSort(a, low, mid)  # 继续递归拆分左边序列
        mergeSort(a, mid + 1, high)  # 继续递归拆分右边序列
        merge(a, low, mid, high)  # 拆分后归并排序


# 归并函数
def merge(a, low, mid, high):
    i = low
    j = mid + 1
    temp = []
    # 左右边比较,数值小的数放入temp数组
    while i <= mid and j <= high:
        if a[i] < a[j]:
            temp.append(a[i])
            i += 1
        else:
            temp.append(a[j])
            j += 1
    # 把左边剩余的数移入数组
    while i <= mid:
        temp.append(a[i])
        i += 1
    # 把右边边剩余的数移入数组
    while j <= high:
        temp.append(a[j])
        j += 1
    # 将temp列表中的数全部复制到原列表a中对应的索引位置
    for k in range(len(temp)):
        a[k + low] = temp[k]


a = [46, 37, 42]  # 要排序的列表
mergeSort(a, 0, len(a) - 1)
print(a)

二:break终止循环

# 吃四个苹果
i = 1
while i <= 4:
    print(f"吃第{i}个苹果")
    i += 1

print("=========================")
# 吃四个苹果 吃到第三个就不吃了 不用吃第四个
i = 1
while i <= 4:
    print(f"吃第{i}个苹果")
    if i == 3:
        print("我吃饱了:毁灭吧,结束吧")
        # 终止循环
        break
    i += 1

# break 和 continue区别,break是终止所有循环,continue是跳出本次循环

三:continue跳出本次循环

# 第三次循环吃到一个带有虫子的苹果 跳出本次循环 继续吃第四个苹果
i = 0
while i < 4:
    i += 1
    if i == 3:
        print("这个苹果有虫子,扔掉,退出本次循环")
        # continue 跳出本次循环
        continue
    print(f"吃第{i}个苹果")

# break 和 continue区别,break是终止所有循环,continue是跳出本次循环

四:for循环

# 循环打印 Hello Python 每个单词
#       123456
str1 = "Python"
print(str1[3])
# i 是临时变量,用来取值
for i in str1:
    print(i)

'''
随堂练习
1、while循环去除y和o,打印出来 
'''
print("===========================")
j = 0
while j < 6:
    if j == 1 or j == 4:
        print(str1[j])
    j += 1

print("===========================")

# 使用for循环 打印 James 跳过m
for i in "James":
    if i == "m":
        continue
    print(i, end=' ')

五:猜拳游戏

'''
石头(1) 剪刀(2) 布(3)
电脑赢:1-2, 2-3, 3-1
平局: 1-1 2-2 3-3
我赢: 1-3 2-1 3-2
'''
print("猜拳游戏开始!")
import random
user = int(input("请输入猜拳数字:石头(1) 剪刀(2) 布(3)"))
# computer 是一个int类型
computer = random.randint(1, 3)
print(computer, "-", user)

if user == computer:
    print("平局")

elif (computer == 1 and user == 3) or (computer == 2 and user == 1) or (computer == 3 and user == 2):
    print("我赢了")
else:
    print("电脑赢了")

六:range的用法

i = 1
while i <= 5:
    print(i)
    i += 1

print("=========================")
for i in range(1, 6):
    print(i)

'''
随堂练习
1、使用for循环打印
*
**
***
****
*****
2、使用for循环打印
*
***
*****
'''
# 一
print("一")
for i in range(1, 6):
    print("*" * i)

# 二
print("二")
for i in range(1, 6):
    if i % 2 == 1:
        print("*" * i)

七:字符串操作

# 定义一个字符串  字符串使用双引号或者单引号定义
a = "Hello Python"
b = 'abcdefg'
print(type(a))
print(type(b))

name1 = '晴小天'
name2 = "范顺"
name3 = '''廖景观'''
name4 = """胡航"""
name5 = '''
唐佳亮'''
print(type(name1))
print(type(name2))
print(type(name3))
print(type(name4))
print(type(name5))
# 格式化字符串
print(f"你的名字是{name1}")

print("===========================")

#       01234  字符串下标 或者叫做 索引
name = "simon"
print(name[0])  # 取s
print(name[2])  # 取m
print(name[4])  # 取n

print("==================")

# 切片    0123456
nameq = "abcdefg"
# 第一个数字是起始位置(包含)
# 第二个位置上的之是结束位置(不包含)
# 要前不要后
print(nameq[2:5])
print(nameq[2:5:1])  # 跟上面一样 第三个参数是步行长 默认是1
print(nameq[:5])  # 第一个参数不写 默认是0
print(nameq[4:])  # 第二个参数不写 默认取到结尾
print(nameq[:])  # 第一个和第二个都不写 默认取全部
print(nameq[::2])  # 取步长是2 表示跳着取 0246位置上的值
print(nameq[-1])  # 反着取最后一个
print(nameq[:-1])  # 从开始取到最后一个,但是最后一个值不要
print(nameq[::-1])  # 反着取全部  把字符串倒过来
print(nameq[-4:-2])  # 从倒数第四个取到倒数第三个取出

print("=================================")

# 字符串查找 find
#        012345678910
mystr = "Hello World"
# 查找hello 查找到了返回 子串在原来字符串中的起始位置
result1 = mystr.find("Hello")
print(result1)
result2 = mystr.find("World")
print(result2)
# 在字符串中 查找一个不存在的值返回 -1
result3 = mystr.find("python")
print(result3)
# 第二个参数 和第三个参数 表示是 在哪一个区间内查找
result4 = mystr.find("lo", 6, 10)  # 在位置 6-10 查找不到 lo
print(result4)
result5 = mystr.find("lo", 2, 6)  # 在位置 2-6 查找到 lo
print(result5)

print("==============================")
# 字符串查找index 用法与find类型
mystr1 = "hello world"
# 查找到则返回 第一个字符的位置下标
ret1 = mystr1.index("hello")
print(ret1)
ret2 = mystr1.index("world")
print(ret2)
# ValueError: substring not found
# 表示没用找到 则报错 报错会导致程序结束
# ret3 = mystr1.index("python")
# print(ret3)
# 在指定位置上查找 找不到则报错
# ret4 = mystr1.index("lo", 4, 8)
# print(ret4)
ret5 = mystr1.index("lo", 1, 8)
print(ret5)

八:字符串操作(2)

# 统计字符串次数 count
from builtins import print

com_apply = "This class is very good, so good, people good, so amazing"
# 计算good在字符串中的次数
result1 = com_apply.count("good")
print(result1)
# 24,50 是指定范围内 查找good 的次数
result2 = com_apply.count("good", 24, 50)
print(result2)

print("=========================")

# 修改字符串 replace
com_apply = "This class is very good, so good, people good, so amazing"
# 将所有的good替换为bad 生成一个新的字符串 原来的字符串没有改变 第三个参数是替换的次数
result3 = com_apply.replace("good", "bad", 2)  # 没用第三个参数的情况下 就是替换全部
print(result3)
print(com_apply)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值