Python基础练习
python新手入门
沉觞流年
博客内容仅是个人学习笔记,不是技术博客。
展开
-
python 冒泡排序
'''1.对一个列表进行冒泡排序【升序】思考:1.比较的轮数2.每轮比较的次数3.当前元素与下一个比较,若当前元素大于下一个元素则交换位置list1 = [12,343,23,34,45] 4 1[12,23,34,45,343] 3 2[12,23,34,45,343] 2 3'''list1 = [12,343,23,234,56677,332,34...原创 2019-03-24 21:07:01 · 197 阅读 · 0 评论 -
python 快速排序
对一个列表进行快速排序【升序】快速排序的思想是:首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。时间复杂度:O(nlgn)运用的技术:递归函数、列表生成式首先向函数中传入一个要排序的列表判断列表中的数据,如果是一个空列表或者列表中只有一个元素则返回原列表然后应用列表生成式生成符合...原创 2019-11-28 01:04:48 · 153 阅读 · 0 评论 -
python 选择排序
选择排序和冒泡排序很相似选择排序是定死第一个数,用这个数与剩余的每个数进行对比,这样最后就会得到最小的数放在第一个位置,第二轮定死为第二个,与剩下的再进行对比…最后最大的就会放到最后,排序完成就比如在一堆大小不一的球中进行选择(以从小到大,先选最小球为例):选择一个基准球将基准球和余下的球进行一一比较,如果比基准球小,则进行交换第一轮过后获得最小的球在挑一个基准球,执行相同的动作得到...原创 2019-11-28 01:12:00 · 123 阅读 · 0 评论 -
python 插入排序
插入排序和冒泡排序极为相似插入排序是从后面向前对比,它所插入的列表必须是一个有序的,插入的数与它前面的所有数一个一个的对比,直到找到比他小的就停止对比基本思想为:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。插入排序就是用一个数与一个已排好序的序列进行比对,从右向左进行。list = [12,343,23,234,56677,332,34...原创 2019-11-28 01:27:10 · 89 阅读 · 0 评论 -
自定义函数实现冒泡排序功能
自定义函数实现冒泡排序功能def maopao(str1): strList = str1.strip().split() numList = [] for x in strList: numList.append(int(x)) for i in range(len(numList)-1): for j in range(len(numList)-i-1): if numList[j]>numList[j+1原创 2020-08-30 21:59:36 · 2477 阅读 · 0 评论 -
自定义函数实现max函数功能
自定义函数实现max函数功能from collections import Iterabledef getMax(*args): if len(args) != 0: # if len(args) == 1 and isinstance(args[0],Iterable): maxnum = args[0] for x in args: if x>maxnum: maxnum = x原创 2019-03-26 21:49:08 · 1667 阅读 · 1 评论 -
自定义函数判断输入内容类型和长度
通过偏函数方式,自定义函数,判断是什么类型和内容长度是否符合要求import functoolsdef func(obj,n): if type(obj) in [str,list,tuple,set,dict]: if len(obj)>n: return True else: return False else: raise TypeErrorfunc2 = functoo原创 2019-03-26 21:49:41 · 277 阅读 · 0 评论 -
自定义函数判断内容是否全为字母
Python中isalpha() 没考虑中文自己定义一个函数,函数与isalpha()功能相同,要求考虑中文.自定义函数判断内容是否全为字母def myalpha(str1): if str1 == "": return False else: for x in str1: if x >= 'a' and x <= 'z' or x >= 'A' and x <= "Z":原创 2020-08-30 22:01:58 · 237 阅读 · 0 评论 -
自定义函数求前n项和
普通函数方式def qiuhe(n): res = 0 for x in range(1,n+1): res += x return res# print(qiuhe(10))# print(qiuhe(100))闭包方式def lazy_sum(*args): def get_sum(): res = 0 for x in args: res += x return res原创 2019-03-26 21:50:39 · 1409 阅读 · 0 评论 -
自定义函数求阶乘的前n项和
先定义阶乘函数,再定义阶乘求和函数#先定义阶乘函数def jiecheng(n): ji = 1 for x in range(1,n+1): ji *= x return ji# 再定义阶乘求和函数def jiechenghe(n): res = 0 for x in range(1,n+1): res += jiecheng(x) return resprint(jiechenghe(5))print(jie原创 2019-03-26 21:50:55 · 1425 阅读 · 0 评论 -
自定义函数输出随机彩票号码
把 随机彩票号码 写成函数法一:通过for循环和字符串拼接import randomdef getNum(): str1 = "" for x in range(6): str1 += random.choice(["0","1"]) return str1print(getNum())法二:通过列表生成式和字符串拼接import randomdef getNum2(): return "".join([random.c原创 2019-03-26 21:51:15 · 320 阅读 · 0 评论 -
自定义函数判断回文序列
检查给定的字符串是不是回文序列首先把所有字母转化为小写,并移除非英文字母符号。最后对比字符串与反向字符串是否相等,相等则表示为回文序列。def palindrome(string): from re import sub s = sub('[\W_]', '', string.lower()) return s == s[::-1]print(palindrome('caooac') )# True...原创 2020-08-30 12:02:47 · 553 阅读 · 0 评论 -
自定义函数获取列表中出现频率最高的元素
def most_frequent(list): return max(set(list), key = list.count)list = [1,2,1,2,3,2,1,4,2]print(most_frequent(list) )# 2原创 2020-08-29 14:19:27 · 407 阅读 · 0 评论 -
计算执行特定代码所花费的时间
import timestart_time = time.time()a = 1b = 2c = a + bprint(c) end_time = time.time()total_time = end_time - start_timeprint("Time: ", total_time)原创 2020-08-29 14:07:20 · 185 阅读 · 0 评论 -
枚举列表的索引与值
For 循环来遍历某个列表,枚举列表的索引与值list = ["a", "b", "c", "d"]for index, element in enumerate(list): print("Value", element, "Index ", index )# ('Value', 'a', 'Index ', 0)# ('Value', 'b', 'Index ', 1)#('Value', 'c', 'Index ', 2)# ('Value', 'd', 'Index ', 3原创 2020-08-29 13:59:39 · 1352 阅读 · 0 评论 -
自定义函数合并字典
# 法一:def merge_two_dicts(a, b): c = a.copy() c.update(b) return ca = { 'x': 1, 'y': 2}b = { 'y': 3, 'z': 4}print(merge_two_dicts(a, b))# {'y': 3, 'x': 1, 'z': 4}# 法二:def merge_dict(a, b): return {**a, **b}a = { 'x': 1, '.原创 2020-08-29 13:56:19 · 225 阅读 · 0 评论 -
自定义函数检查列表内元素是否重复
def list_is_repeate(lst): return len(lst) != len(set(lst))x = [1,2,3,4,5,5]list_is_repeate(x) # True原创 2020-08-29 13:12:26 · 534 阅读 · 0 评论 -
python链式函数调用
在一行代码内调用多个函数def add(a, b): return a + bdef subtract(a, b): return a - ba, b = 4, 5print((subtract if a > b else add)(a, b)) # 9原创 2020-08-29 13:04:44 · 403 阅读 · 0 评论 -
自定义函数通过函数取差
先会应用一个给定的函数,然后再返回应用函数后结果有差别的列表元素def difference_by(a, b, fn): b = set(map(fn, b)) return [item for item in a if fn(item) not in b]from math import floorprint(difference_by([2.1, 1.2], [2.3, 3.4],floor) )# [1.2]print(difference_by([{ 'x': 2原创 2020-08-29 12:54:44 · 154 阅读 · 0 评论 -
自定义函数对比列表中的独有元素
对比两个列表,列出某个列表中独有的元素def differenceA(a, b): set_a = set(a) set_b = set(b) difference_Ab = set_a.difference(set_b) # print(difference_Ab) return difference_Abprint(differenceA([1,2,3], [1,2,4]) )# 输出A列表中的独有元素 {3}def differenc原创 2020-08-29 11:18:27 · 141 阅读 · 0 评论 -
自定义函数展开列表
通过递归的方式将列表的嵌套展开为单个列表def spread(arg): ret = [] for i in arg: if isinstance(i, list): ret.extend(i) else: ret.append(i) return retdef unfold_list(lst): result = [] result.extend( spread(l原创 2020-08-29 11:06:21 · 152 阅读 · 0 评论 -
自定义函数统计元音字母
通过正则表达式统计字符串中的元音 (‘a’, ‘e’, ‘i’, ‘o’, ‘u’) 的个数import redef count_vowels(str): return len(re.findall(r'[aeiou]', str, re.IGNORECASE))print(count_vowels('goodnight') )# 3print(count_vowels('goodbye') )# 3...原创 2020-08-29 10:59:46 · 318 阅读 · 0 评论 -
自定义函数去掉布尔型元素
使用 filter() 函数,将布尔型的值去掉def wipe_bool(lst): return list(filter(bool, lst))print(wipe_bool([0, 1, False, 2, '', 3, 'a', 'B', 4]))# [1, 2, 3, 'a', 'B', 4]原创 2020-08-28 19:29:05 · 149 阅读 · 1 评论 -
自定义函数指定大小切割列表
给定具体的大小,定义一个函数以按照这个大小切割列表from math import ceildef cut_list(lst, size): return list( map(lambda x: lst[x * size:x * size + size], list(range(0, ceil(len(lst) / size)))))print(cut_list([1,2,3,4,5],2))# [[1,2],[3,4],5]...原创 2020-08-27 19:42:39 · 216 阅读 · 0 评论 -
自定义函数检查字符串占用的字节数
检查字符串占用的字节数def byte_size(string): return(len(string.encode('utf-8')))print(byte_size('你好') )# 6print(byte_size('Hello') )# 5原创 2020-08-27 18:25:02 · 222 阅读 · 0 评论 -
自定义函数检查两个字符串的组成元素是否一致
Counter()函数用于统计各元素的数量from collections import Counterprint(Counter('abcde'))# Counter({'a': 1, 'b': 1, 'c': 1, 'd': 1, 'e': 1})检查两个字符串的组成元素是不是一样的from collections import Counterdef srt_is_equally(first, second): return Counter(first) == Counter(原创 2020-08-27 18:10:49 · 381 阅读 · 0 评论 -
自定义函数实现重复元素判定
检查给定列表是不是存在重复元素,可使用python中 set() 函数来移除所有重复元素,通过去重后的长度进行判断def list_is_unique(lst): return len(lst) == len(set(lst))x = [1,1,2,2,3,2,3,4,5,6]y = [1,2,3,4,5]list_is_unique(x) # Falselist_is_unique(y) # True...原创 2020-08-27 18:00:55 · 987 阅读 · 0 评论 -
赋值拷贝,浅拷贝与深拷贝
赋值拷贝,浅拷贝与深拷贝赋值拷贝 [引用拷贝]特点:拷贝出来的新的列表与原本列表,他们两个共用同一块内存,若列表发生变化,则同时进行改变.list1 = [1,2,3,4,[1,2,3]]list2 = list1print(list1) # 输出结果 [1, 2, 3, 4, [1, 2, 3]]print(list2) # 输出结果 [1, 2, 3, 4, [...原创 2019-08-24 00:26:19 · 111 阅读 · 0 评论 -
python 用随机数模块摇骰子
摇骰子,只能押大或押小取值范围【1~6】【1, 2, 3】 小【4, 5, 6】大若押中,则打印“”你赢了。“若没押中,则打印”你输了。。。“import randomprint("开始游戏...")ya = input("押大还是押小?大/小")num = random.randrange(1,7)print(num)if ya == "大" and num>3 or ya == "小" and num<4: print("你赢了")else:原创 2019-03-24 21:13:25 · 1117 阅读 · 0 评论 -
python 用if语句判断闰年
'''1.输入一个年份,判断是否为闰年。条件1:不能被100整除且能被4整除条件2:被400整除【世纪年】'''year = int(input("请输入年份:"))if year%100 != 0 and year%4 == 0 or year%400 == 0: print("%d为闰年"%year)else: print("%d不是闰年"%year)...原创 2019-03-24 21:08:31 · 7948 阅读 · 0 评论 -
python 猜数字游戏
'''7.猜数字很多人在聚餐时都玩过猜数字游戏,由某人随机出一个指定范围内的数,然后其他人一个一个猜,猜的过程中区间不断缩小,直到猜中为止。猜对之后打印猜测次数.'''import randommaxCount = Nonewhile 1: n = int(input("请输入末尾数字")) count = 0 number = random.rand...原创 2019-03-24 21:17:50 · 1248 阅读 · 0 评论 -
python 鸡兔同笼和百钱百鸡
'''7。百钱买百鸡,现有100文钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只,要求:公鸡,母鸡,小鸡都要有,把100文钱买100只鸡,买的鸡是整数。多少只公鸡,多少只母鸡多少只小鸡?公鸡 i 20母鸡 j 33小鸡 k 98i + j + k == 100 and 5*i + 3*j + k/3 == 100'''# for i in range(1,20):# ...翻译 2019-03-24 21:29:17 · 801 阅读 · 0 评论 -
python 输出菱形
'''打印星星号,从控制台输入1:* 1 1输入2:* 1 1** 2 2输入3:* 1 1** 2 2*** 3 3依次类推.'''# n = int(input("请输入打印的行数:"))# # for x in range(1,n+1):# # print(x*"*")# for x in range(1,n+1):# for j in ra原创 2019-03-24 21:19:19 · 8651 阅读 · 0 评论 -
python打印九九乘法表
python新手入门打印九九乘法表# 打印九九乘法表# 外循环控制行:9行# 内循环控制列:# 第一行 1列# 第二行 2列# ...# 第九行 9列for x in range(1,10): #x=1 for j in range(1,x+1): #j [1,2) print("%dx%d=%d"%(j,x,x*j),end="\t")...原创 2019-03-24 21:03:20 · 353 阅读 · 0 评论 -
判断三个数能否组成三角形
# 定义函数判断输入内容为正数def ispositive(num): try: float(num) except ValueError as e: print('输入内容不是数字') else: if float(num) <= 0: print('输入内容不是正数') else: return True #原创 2020-08-27 17:11:08 · 3721 阅读 · 1 评论 -
python 双色球
'''4.写一个双色球彩票系统,系统可以随机产生一组数据,一组彩票数据有六位数,这六位数的的取值范围是0和1。一张彩票是两块钱,可以用户可以进行充值,充值完毕进入游戏,用户可以选择购买彩票的张数,判断余额是否充足,若余额充足,让用户输入购买彩票的号码,提示用户,输入号码必须是6位0或1,若不对则让用户重新输入.开奖,若用户中奖,中奖金额,是购买张数的金额10倍,若未中奖,打印继续努力....原创 2019-03-24 21:10:53 · 1220 阅读 · 0 评论 -
python 递归函数 斐波那契数列(兔子生育)
'''1 1 2 3 5 8 13兔子生育'''def f(n): if n==1 or n==2: return 1 else: return f(n-1)+f(n-2)print(f(5))print(f(6))print(f(7))print(f(100))翻译 2019-03-24 21:16:35 · 3080 阅读 · 0 评论 -
python 类(练习) (人开枪射击子弹)
两个类'''作业:同桌买了一款华为mateX跟你炫耀.分析:人 手机人:特征: 有钱,name,手机行为:买,炫耀手机:特征:贵,型号,品牌,价格行为:折叠,双面成像'''class Phone(): def __init__(self,xinghao,pinpai,price): self.xinghao = xinghao s...翻译 2019-03-27 00:24:07 · 2114 阅读 · 0 评论 -
python写歌词解析器 王菲-传奇
歌词切片方式'''3.歌词解析器1.把歌词进行解析切片处理,把时间转成对应的浮点数2.使用字典将时间与歌词进行存储{时间:歌词}3.循环自动打印歌词【结束循环的条件,key为None的时候】'''import timemusicLrc = '''[00:03.50]传奇[00:19.10]作词:刘兵 作曲:李健[00:20.60]演唱:王菲[00:26.60][04:...翻译 2019-03-26 21:48:43 · 625 阅读 · 0 评论 -
python打造简单音乐播放器
函数方式'''2.写一个音乐播放器功能:先进入页面:******************************* ** 欢迎来到python播放器 ** *******************************设置选项:*************...翻译 2019-03-27 00:19:46 · 2028 阅读 · 1 评论