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连接DB2数据库
Aug 27 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
Python AES加密实例解析
Jan 18 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
python实现最小二乘法线性拟合
Jul 19 Python
关于Python turtle库使用时坐标的确定方法
Mar 19 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
python爬虫框架feapde的使用简介
Apr 20 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中显示格式化的用户输入
2006/10/09 PHP
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
javascript编写简易计算器
2017/05/06 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
Python模块学习 re 正则表达式
2011/05/19 Python
Python入门篇之字符串
2014/10/17 Python
Python中使用logging模块打印log日志详解
2015/04/05 Python
Python内置函数reversed()用法分析
2018/03/20 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
django数据库自动重连的方法实例
2019/07/21 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
商务会议邀请函
2014/01/09 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
实习单位意见
2015/06/04 职场文书
个人收入证明格式
2015/06/24 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers