栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python入门基础02——流程控制

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python入门基础02——流程控制

文章目录

流程控制

举例子:猜数字排序算法

冒泡排序选择排序插入排序 二分查找时间复杂度

流程控制
# 条件判断 if 
# 单分支
if 表达式:
   代码块
# 多分支
age = input('输入年龄')
age = int(age)
if age>=18:
    print("成年")
elif age>=12:
    print("少年")
elif age<12:
    print("儿童")

# 猜数字游戏
num = 9
guessNum = input('please guess a num:')
guessNum = int(guessNum)
if guessNum==num:
    print('猜对了')
else:
    if guessNum 
# 循环控制 while
num = 0
while num<5:
    print('xiao')
    num +=1 

# 猜数字游戏
num = 9 
n = 0
while n<5:
    guessNum = int(input('please guess num:'))
    if guessNum==num:
        print('对了')
        break
    elif guessNum 
# for 循环
# 遍历列表
list = [1,2,3,4,5]
sum = 0
for item in list:
    sum += item
print(sum)

# 遍历字典
dic = {
    'name':'xiao',
    'age':22
}
for item in dic.items():
    print(item)
for key,value in dic.items():
    print(key,value)
for key in dic.keys():
    print(f'{key,dic[key]}')
# 循环嵌套
i = 1
while i<=3:
    j = 1
    while j <=2:
        print('xiao')
        j +=1
    i +=1
# 退出循环
# break,跳出整个循环
i =1
while i<=5:
    if i==2:
        break
    print(i)
    i +=1

#continue,跳出本次循环
list = [1,2,3,4,5]
for i in list:
    if i==3:
        continue
    print(i)
    

举例子:猜数字
import random

score = 100  # 初始分数
count = 0  # 统计猜的次数
# 随机产生1-100数
num = int(random.random() * 100)
while True:
    count += 1
    guessNum = int(input('Pelase guess the num:'))
    if guessNum == num:
        print('对了')
        break
    elif guessNum < num:
        if score <= 0:  # 分数小于等于0退出 
            break
        score -= 5  # 猜错扣5分
        print('小了')
    else:
        if score <= 0:
            break
        score -= 5
        print('大了')
print('一共猜了%d次,总得分为%d' % (count, score))
排序算法 冒泡排序
# 将序列中元素两两比较,找出最大值,将最大值移动到最后位置,层层偏移

# 第一次排序
list = [3, 7, 1, 4, 6]
for i in range(len(list) - 1 - j):  # range(m),0->m的整数列表
    if list[i] > list[i + 1]:
        list[i], list[i + 1] = list[i + 1], list[i]  # 两个元素交换位置

# n次排序,因为每次最大都已在最后,只需移动当前所剩的数最大值到后面即可,所以-j
list = [3, 7, 1, 4, 6]
for j in range(len(list) - 1):
    for i in range(len(list) - 1 - j):  # range(m),0->m的整数列表
        if list[i] > list[i + 1]:
            list[i], list[i + 1] = list[i + 1], list[i]  # 两个元素交换位置
选择排序
# 将序列中元素两两比较,找出最大值,将最大值和序列中最后一个元素交换位置,非层层偏移,直接交换

# 第一次排序
list = [3, 7, 1, 4, 6]
max_index = 0  # 保存最大元素下标,开始默认为0
for i in range(len(list) - 1):
    if list[max_index] < list[i + 1]:
        max_index = i + 1  # 修改最大值下标位置
list[max_index], list[len(list) - 1] = list[len(list) - 1], list[max_index]

# n次排序,因为每次最大都已在最后,所以只需比较前面数就行,当然每次交换位置也需要就比较的数而改变
list = [3, 7, 1, 4, 6]
for j in range(len(list) - 1):
    max_index = 0  # 保存最大元素下标,开始默认为0
    for i in range(len(list) - 1 - j):
        if list[max_index] < list[i + 1]:
            max_index = i + 1  # 修改最大值下标位置
    list[max_index], list[len(list) - 1 - j] = list[len(list) - 1 - j], list[max_index]
插入排序
# 将列表假象为两份:
list = [3, 7, 1, 4, 6]
# 一份有序:默认情况下,列表第一个元素为有序的部分 3
# 一份无序:默认情况下:列表除第一个元素外的元素为无序部分 7,1,4,6
# 无序向有序插入数据(从末尾开始比较)
# 例如上述列表,首先将7插入,和3比较后插入3的后一位;将1插入需要和7比较再和3比较...

# 代码思想
# 定义一个变量i,初始值为1,表示有序部分的元素个数
# 第一次排序,i=1,[3    7,1, 4, 6]
list = [3, 7, 1, 4, 6]
i = 1
    # list[i] 是无序部分第一个元素
    # list[i-1]有序部分最后一个元素
if list[i] < list[i - 1]:
    list[i], list[i - 1] = list[i - 1], list[i]
    
# n次排序:i-1是为了循环比较;break是已找到合适位置所以停止
list = [3, 7, 1, 4, 6]
for i in range(1, len(list)):
    while i > 0:
        if list[i] < list[i - 1]:
            list[i], list[i - 1] = list[i - 1], list[i]
            i -= 1
        else:
            break
二分查找
# 也叫折半查找,仅作用在有序序列中
list = [1, 3, 4, 6, 7, 9]

number = 3  # 要被查找的数
number_exist = False  # 该数是否存在,默认不存在
low = 0  # 第一个元素下标
high = len(list) - 1  # 最后一个元素下标

while low <= high:
    mid = (low + high) // 2  # mid保存中间元素的下标
    if number > list[mid]:  # 查找元素在中间元素右侧
        low = mid + 1
    elif number < list[mid]:  # 查找元素在中间元素左侧
        high = mid - 1
    else:  # 查找元素等于中间元素
        number_exist = True
        break

print(number_exist)
时间复杂度

时间复杂度和空间复杂度都是衡量算法性能好坏优劣的指标,理想是时间短、空间小,但是目前主要是以时间复杂度作为评判的标准

时间复杂度:量化算法执行步骤的数量

n = 5 # 1
while n > 0: # 2n
    print('xiao')
    n -=1
print('succeed') # 1
# 上述执行步骤数量为 2+2n

# 时间复杂度通过大O记法来表示
# 也就是量化后的表达式取出最有意义的一项,放在大O括号内,上述就是O(n)
# 最小的就是O(1)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号