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 socket多线程通讯实例分析(聊天室)
Apr 06 Python
python学习 流程控制语句详解
Jun 01 Python
python中验证码连通域分割的方法详解
Jun 04 Python
python文件拆分与重组实例
Dec 10 Python
tensorflow estimator 使用hook实现finetune方式
Jan 21 Python
django修改models重建数据库的操作
Mar 31 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
python中pop()函数的语法与实例
Dec 01 Python
在Python中实现字典反转案例
Dec 05 Python
python opencv肤色检测的实现示例
Dec 21 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 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入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
对象的类型:本地对象(1)
2006/12/29 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
Python设计模式之单例模式实例
2014/04/26 Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python 读取位于包中的数据文件
2020/08/07 Python
python实现发送邮件
2021/03/02 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
计算机专业个人求职信范例
2013/09/23 职场文书
就职演讲稿范文
2014/05/19 职场文书
高中综合实践活动总结
2014/07/07 职场文书
小班下学期个人总结
2015/02/12 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL