7个关于Python的经典基础案例


Posted in Python onNovember 07, 2021

1.列表排序

def que6():
    # 6.输入三个整数x, y, z,形成一个列表,请把这n个数由小到大输出。
    # 程序分析:列表有sort方法,所以把他们组成列表即可。
    li = np.random.randint(-100, 100, size=10)
    # 就地转化
    li = li.tolist()
    # 用sort()结果
    li_sort = sorted(li, reverse = False)
    print('用sort方法,重新排列结果:{}'.format(li_sort))

    # 不用sort方法,自己写排序方法做,

    # 冒泡排序
    def bubbleSort(m):
        m = m.copy()
        for time in range(1, len(m)):
            for index in range(len(m) - time):
                if m[index] > m[index+1]:
                    m[index], m[index+1] = m[index+1] , m[index]
        return  m

    # 选择排序
    def selectSort(m):
        m = m.copy()
        for seat_L in range(len(m)-1):
            for seat_R in range(seat_L+1, len(m)):
                if m[seat_L] > m[seat_R]:
                    m[seat_L], m[seat_R] = m[seat_R], m[seat_L]
        return m

    # 插入排序1(内部写成函数):
    def insertSort_1(m):
        result = []

        # 单个元素k插入列表li
        def to_insert(li, k):
            # 标识符
            tab = False

            # 寻找插入位置
            # 循环次数应该至少大于列表长度+1,None也占一位(空列表),即认为扑克牌最末尾还有一张‘空牌'
            for i in range(len(li) + 1):
                # 修改标识符,标志‘遍历完后的下一个循环',即在和‘空牌'比较
                if i == (len(li)):
                    tab = True

                # 如果在对li[-1]比较完成(包含)之前,且寻找到位置,即把扑克从左往右比较一遍
                if not tab and k < li[i]:
                    li.insert(i, k)
                    break
            # 如果遍历完成,多循环一次,即和‘空牌'不需要比较,直接把牌替换掉‘空牌'
            if tab:
                li.append(k)
            return li
        # 遍历列表
        # result = result[:1]
        for length in range(len(m)):
            result = to_insert(result, m[length])

            # print(result,m[length])
        return result

    # 插入排序2(直接嵌套循环):
    def insertSort2(m):
        m = m.copy()
        result = m[:1]
        for index_choose in range(1, len(m)):
            # 手上已经有index_choose张牌,比较第index_choose+1张牌则append
            # 逐个比对手上的牌,如果都对比了一遍,则加到最后
            for index_insert in range(len(result) + 1):
                print(result, index_insert,'\n',m, index_choose,'\n\n')
                if index_insert != index_choose and m[index_choose] < result[index_insert] :
                    result.insert(index_insert, m[index_choose])
                    break
                if index_insert == index_choose:
                    result.append(m[index_choose])
            # print(result, m[index_choose])
        return result



    # print(li)
    print('插入排序:',insertSort3(li))
    print('选择排序:',selectSort(li))
    print('冒泡排序:',bubbleSort(li))
que6()

2.调换字典键值

# 1. 调换元素.\
def que1():
    d={1:"one",2:"two"}

    # 方法1 --- 动态赋值
    def method1(d):
        d = d.copy()
        result = {}
        for k,v in d.items():
            result[v] = k
        return result

    # 方法2 --- 生成器
    def method2(d):
        d = d.copy()
        result = {v:k for k,v in d.items()}
        return result

    # 方法3 --- 由值寻找键
    def method3(d):
        d = d.copy()
        # 由键寻找值
        def match(dic, b):
            return [k for k,v in dic.items() if v == b]
        # 先生成key-None,再赋值
        result = {}
        result = result.fromkeys(d.values())
        for k in result.keys():
            result[k] = match(d, k)[0]
        return result

    # 方法4 --- 列表转字典 < 直接转换/动态赋值 >
    def method4(d):
        d = d.copy()
        key = d.keys()
        val = d.values()
        data = list(zip(key, val))

        # 方法4-1
        result1 = {}
        for i in range(len(data)):
            result1[data[i][1]] = data[i][0]

        # 方法4-2
        result2 = dict(zip(val, key))

        return result1, result2

    print('新列表动态赋值方法:{}'.format(method1(d)))
    print('生成器方法:{}'.format(method2(d)))
    print('由键寻值方法:{}'.format(method3(d)))
    print('动态赋值列表转字典方法:{}'.format(method4(d)[0]))
    print('直接列表转字典方法:{}'.format(method4(d)[1]))
# que1()

3.删除列表中的重复元素

遇到问题没人解答?小编创建了一个Python学习交流群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

删除重复元素list =[1,2,5,4,1,5,6,8,0,2,5]

a = np.random.randint(-100, 100, size=10)
a = a.tolist()

def method1(a):
    a = a.copy()
    a = set(a)
    return a
def method2(a):
    b = a.copy()
    c = 0
    for i in range(len(a)-1):
        if b[i+c] in b[:i+c]+b[i+c+1:]:
            b.pop(i+c)
            c -= 1
    return b
print('集合法:',method1(a))
print('遍历法:',method2(a))

4.输出质数

def prime(end):

    prime_list = []
    if end <= 1:
        print('必须大于1')
    else:
        # prime_list.append(2)
        for i in range(2, end+1, 1):
            count = 0
            if i == 2:
                if i%2 != 0:
                    prime_list.append(2)
            else:
                for m in range(2, i):
                    # 能够整除,则跳出循环
                    if (i % m) == 0:
                        # print(i, m)
                        break
                    # 否则计数+1
                    else:
                        count += 1
                    # 判断是否整除完成(0/n)
                    if count == i - 2:
                        prime_list.append(i)

                    print(count, i, m)

    return (prime_list)

num = int(input('想输出2到多少?'))
print(prime(num))

5.判断是一年中第几天

def que3():
    # 3.输入某年某月某日,判断这一天是这一年的第几天?:
    # 闰年判断函数
    def judge_leap(num):
        date = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        # (四年一闰 and not百年) or 四百年闰
        if (num % 4 == 0 and num % 100 != 0) or num % 400 ==0:
            date[1] =29
        return date

    # 格式转换
    date = (input('请输入一个日期,格式如:“2018.02.12”:'))
    date_list = (list(map(int, (date.split('.')))))
    # 遍历计算天数
    day = date_list[2]
    for i in range(date_list[1]):
        day += judge_leap(date_list[0])[i]
    print('{}月{}日是{}年的第{}天\n'.format(date_list[1], date_list[2], date_list[0], day))
# que3()

6.猜数字

# 重新猜数字
import random

def judge_num(num, num_random):
    if num > num_random:
        print('It\'s too big')
        return 1
    elif num < num_random:
        print('It\'s too small')
        return 1
    else:
        print("Congratulation!! That\' right!")
        return 0

# 产生随机数
num_start = int(input('Digital lower limit of guess number:\n'))
num_end = int(input('Digital upper limit of guess number:\n'))
num_random = random.randint(num_start, num_end)

# 参数初始化
result = 1      # 判断结果
i = 0           # 循环次数
frequency = 3   # 循环限制次数

# 提示总猜测次数、剩余次数
print('WARNING: You have【{}】 chances you guess '.format(frequency), end = '--&&>>--')
print('【{}】 chances left now:\n'.format(frequency - i +1))

while result and i != frequency:
    # 猜数字
    num = int(input('Please guess a int_number:\n'))
    result = judge_num(num, num_random)
    i += 1

7.进制转换

# 任意进制转十进制
def other_to_decimal(hex, num):
    # 整型转化为列表,
    num_str = str(num)
    # map()将List对象中的元素(list类型)转化为集合(set)类型
    num_list = list(map(int, num_str))
    # 列表反序
    num_list = num_list[::-1]
    print(list(map(int, num_str)))

    # 获取数字位数
    digit = len(num_list)
    num_decimal = 0

    # 累加
    for i in range(digit):
        numi = num_list[i]
        # print(numi, hex**i)
        num_decimal += numi*(hex**i)   # 对每一位数的幂指数累加

    return num_decimal

# 十进制转任意进制
def decimal_to_other(hex, num):
    # 获取数字位数
    digit = len(str(num))

    num_hex = []
    quotient = 1

    # 相除,余数计入列表num_hex
    while quotient:
        # 取余和取商
        quotient = num // hex
        remainder = num % hex
        # print(quotient, remainder)
        # 余数计入列表
        num_hex.append(remainder)
        # 商做下一次循环
        num = quotient

    # 列表反序,通过切片和sort()函数可以实现
    num_hex = num_hex[::-1]
    # num_hex.sort(reverse=True)

    # 如果超过十进制,用ASCII码转化为字母
    for i in range(len(num_hex)):
        if num_hex[i] > 9:
            num_hex[i] = chr(int(num_hex[i])+87)
    # print(num_hex)

    # 列表转化为字符串
    result = (''.join('%s' %m for m in num_hex))
    return result


Type = bool(input("十进制转任意进制请输入1,任意进制转十进制请输入0\n"))
if Type:
    hex = int(input("需要把十进制转换为多少进制?请输入正整数\n"))
    num = int(input("需要转换的数字是:"))
    print("换算结果是:", decimal_to_other(hex, num))
else:
    hex = int(input("需要把多少进制转换为十进制?请输入正整数\n年"))
    num = int(input("需要转换的数字是:"))
    print("换算结果是:", other_to_decimal(hex, num))

到此这篇关于 7个关于Python的经典基础案例的文章就介绍到这了,更多相关Python 经典案例内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 类的继承实例详解
Mar 25 Python
Python实现统计文本文件字数的方法
May 05 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
Python入门必须知道的11个知识点
Mar 21 Python
深入浅析python 中的匿名函数
May 21 Python
Python 字符串与数字输出方法
Jul 16 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
python常用运维脚本实例小结
Feb 14 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
基于pandas向csv添加新的行和列
May 25 Python
python机器学习创建基于规则聊天机器人过程示例详解
Python中Numpy和Matplotlib的基本使用指南
python模块与C和C++动态库相互调用实现过程示例
Nov 02 #Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 #Python
Python 正则模块详情
Nov 02 #Python
Python 数据可视化之Bokeh详解
Nov 02 #Python
Python 数据可视化之Matplotlib详解
You might like
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
简单的js计算器实现
2016/10/26 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
Python实现扫码工具的示例代码
2020/10/09 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
Java基础知识面试要点
2016/07/29 面试题
业务员的岗位职责
2014/03/15 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
年终奖发放方案
2014/06/02 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
redis缓存存储Session原理机制
2021/11/20 Redis
python 多态 协议 鸭子类型详解
2021/11/27 Python
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers