网站首页 > 基础教程 正文
这篇文章主要给大家分享 5个关于Python的经典基础案例,列表排序、调换字典键值、删除列表中的重复元素、输出质数、判断是一年中第几天、猜数字、进制转换;,需要的朋友可以参考一下
目录
- 1.列表排序
- 2.调换字典键值
- 3.判断是一年中第几天
- 4.猜数字
- 5进制转换
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.删除列表中的重复元素
遇到问题没人解答?小编创建了一个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))
3.判断是一年中第几天
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()
4.猜数字
# 重新猜数字
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
5.进制转换
任意进制转十进制
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的经典基础案例的文章就介绍到这了
猜你喜欢
- 2024-11-02 零基础学习Python,看完这10个案例,让你快速上手掌握Python语言
- 2024-11-02 分享Python20个练手经典案例(附答案)
- 2024-11-02 想从零开始学 Python?这些实践案例你绝不能错过
- 2024-11-02 百看不如一练!247个python实战案例
- 2024-11-02 python集合常见运算案例解析(内含实用小工具)
- 2024-11-02 Python零基础入门的两个经典案例,资深程序员都会经历的过程
- 2024-11-02 练手的70个超火python小项目,小编建议收藏哦,送你们玩去吧
- 2024-11-02 分享3个干货满满的Python实战项目,点赞收藏
- 2024-11-02 十年Python大牛花了三天总结出来的python基础知识实例,超详细
- 2024-11-02 这是我见过最好的python100道练习题(附带答案链接)
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)