
python题库
程言一
我很穷,所以不能买太便宜的东西。
展开
-
看代码猜结果
def add(n,i): return n+idef test(): for i in range(4): yield ig = test()for n in [1,10]: g = (add(n,i) for i in g)print(list(g))#########[20, 21, 22, 23]结果分析原创 2020-06-02 23:12:34 · 270 阅读 · 0 评论 -
希尔算法
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:选择一个增量序列 t1,t2,…,tk,其中 ti>tj,tk=1;按增量序列个数 k,对序列进行 k 趟排序;每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。def shell...原创 2020-02-23 22:44:21 · 150 阅读 · 0 评论 -
插入排序
插入排序—一般来说,插入排序都采用 in-place 在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后;重复步骤 2~5。def insertion_sort(value...原创 2020-02-23 22:41:22 · 112 阅读 · 0 评论 -
选择排序
选择排序------选择排序 (Selection-sort) 是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。def selection_sort(value): for i in range( len(value)-1...原创 2020-02-23 22:40:43 · 88 阅读 · 0 评论 -
冒泡排序
冒泡排序----比较相邻的元素。如果第一个比第二个大,就交换它们两个例如:L = [3,6,8,34,21,67,44,9,23,11]def bubble_sort(value): for i in range(1,len(value)): for j in range(0,len(value)-i): if value[j] > val...原创 2020-02-23 22:40:04 · 109 阅读 · 0 评论 -
有一对兔子,从出生后第 3个月起每个月都生一对兔子,小兔子长到第 3 个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
a = {1: 1, 2: 0, 3: 0}for i in range(1, 6): print(f'{i} {sum(a.values())} {a}') tmp = a[3] a[3] += a[2] a[2] = a[1] a[1] = tmp原创 2020-02-23 22:39:01 · 379 阅读 · 0 评论 -
假如有 10 个小盆友从左到右站成一排,个头不等。老师想让他们按照个头从低到高站好。
从头到尾找一个个头最小的小盆友,然后把它和第一个小盆友交换。然后从第二个小盆友开始采取同样的策略,这样一圈下来小盆友就有序了。import randomdef select_sort(seq): n = len(seq) for i in range(n-1): # 我们假设当前下标的元素是最小的 min_idx = i fo...原创 2020-02-23 22:36:27 · 160 阅读 · 0 评论 -
假如有 10 个小盆友从左到右站成一排,个头不等。老师想让他们按照个头从低到高站好
于是他开始喊口号,每喊一次,从第一个小盆友开始,相邻的小朋友如果身高不是正序就会两两调换,就这样第一轮个头最高的排到了最右边。(冒泡到最右边) 第二轮依次这么来,从第一个小朋友开始两两交换,这样次高的小盆友又排到了倒数第二个位置。依次类推。l = [1,4,7,2,8,9,0,6]for i in range(len(l)): for j in range(1,len(l)): ...原创 2020-02-23 22:35:53 · 749 阅读 · 0 评论 -
二分查找
def cc(list1,value): if value in list1: beg = 0 end = len(list1) count = 1 while beg <= end: medain = int((beg+end)/ 2) #例如:第4和第5个下坐标的中间值等于4+5除...原创 2020-02-23 22:31:05 · 164 阅读 · 0 评论 -
线性查找
"""线性查找就是从头找到尾,直到符合条件了就返回。比如在一个 list 中找到一个等于 5 的元素并返回下标:"""l = [1,2,3,4,5,6,7,11,22,33,44,55,66]for i in range(len(l)): if l[i] in [1,3,5,22]: print(l.index(l[i]))# 法二:number_list =...原创 2020-02-23 22:28:37 · 147 阅读 · 0 评论 -
有 5 个人坐在一起,问第五个人多少岁?
有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第 3 个人,又说比第 2 人大两岁。问第 2 个人,说比第一个人大两岁。最后问第 1 个人,他说是 10 岁。请问第五个人多大?i = int(input("输入总人数:"))a = 0b = 0for j in range(1,i+1): if ...原创 2020-02-23 22:26:37 · 2004 阅读 · 0 评论 -
哥德巴赫猜想说是说,任何一个超过 2 的偶数都可以写成两个素数之和,例如,4=2+2,8=5+3 等
本例要求根据用户输入的偶数找出其素数和的分解形式i = int(input("请输入大于2的偶数:"))value = 0l = []if i >2 and i%2 ==0: for j in range(2,i+1): for k in range(2,j): if j%k == 0: break ...原创 2020-02-23 22:26:01 · 6422 阅读 · 0 评论 -
用户输入位数 n,找出并显示出所有 n 位的自幂数
"""自幂数是指一个 n 位正整数,如果它的各位数字的 n 次方的和加起来等于这个数,数学家称这样的数为自幂数。例如,13+53+33=153,153 就是一个 3 位的自幂数,3 位自幂数也称为水仙花数。本程序设 n 的数值为 1~6,当 n 大于 6 时,程序退出。"""i = int(input("请输入一个1-6位正整数:"))l = []a = 1b = 9if 1 &l...原创 2020-02-23 21:49:07 · 3702 阅读 · 0 评论 -
古代有一个梵塔,塔内有 A、B、C 三个基座,A 座上有 64 个盘子,盘子大小不等,大的在下,小的在上
古代有一个梵塔,塔内有 A、B、C 三个基座,A 座上有 64 个盘子,盘子大小不等,大的在下,小的在上。有人想把这 64 个盘子从 A 座移到 C 座,但每次只允许移动一个盘子,并且在移动的过程中,3 个基座上的盘子始终保持大盘在下,小盘在上。在移动过程中盘子可以放在任何一个基座上,不允许放在别处。编写程序,用户输入盘子的个数,显示移动的过程。def Hanoi(n, ch1, ch2, ...原创 2020-02-23 21:46:48 · 8809 阅读 · 2 评论 -
编写一个程序,计算两个数的最大公约数
"""两个或多个整数公有的倍数叫做它们的公倍数"""# 定义一个函数def hcf(x, y): """该函数返回两个数的最大公约数""" # 获取最小值 if x > y: smaller = y else: smaller = x for i in range(1, smaller + 1): ...原创 2020-02-23 21:45:27 · 4208 阅读 · 0 评论 -
请编写一个程序,输出生成 10 个两位的随机数,并且这两个随机数是素数
""" python的 random 模块提供了随机数生成方法 random.randint(a,b), 它返回一个大于等于 a,小于等于 b 的随机整数。"""import randomn = 0while n < 10: x = random.randint(10, 99) # 获得一个两位的随机整数 # 判断x是否为素数 a = 2 wh...原创 2020-02-23 21:44:09 · 6757 阅读 · 0 评论 -
编写程序,用于实现十进制转二进制、八进制、十六进制
"""不同进制之间的转换,需要用到下列方法:bin():将十进制的数转为二进制oct():将十进制的数转为八进制hex(): 将十进制的数转为十六进制"""# 获取用户输入十进制数dec = int(input("输入数字:"))print("十进制数为:", dec)print("转换为二进制为:", bin(dec))print("转换为八进制为:", oct(dec))...原创 2020-02-23 21:39:53 · 4479 阅读 · 0 评论 -
请编写程序,用于生成指定日期的日历
"""Calendar 模块有很广泛的方法用来处理年历和月历,例如打印某月的月历。"""# 引入日历模块import calendar# 输入指定年月yy = int(input("输入年份: "))mm = int(input("输入月份: "))# 显示日历print(calendar.month(yy, mm))...原创 2020-02-22 23:21:06 · 666 阅读 · 0 评论 -
如果一个 n 位正整数等于其各位数字的 n 次方之和,则称该数为阿姆斯特朗数。 例如 1^3 + 5^3 + 3^3 = 153。
1000 以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。 请编写程序,检测用户输入的数字是否为阿姆斯特朗数。i = input("请输入与一个正整数:")sum = 0value = len(i)for j in range(value): sum += int(i[j])**valueif sum == int...原创 2020-02-22 23:20:04 · 6726 阅读 · 0 评论 -
编写一个程序,通过用户输入一个数字,并计算这个数字的平方根
平方根,又叫二次方根,表示为〔√ ̄〕,如:数学语言为:√ ̄16=4。语言描述为:根号下 16=4。编写一个程序,通过用户输入一个数字,并计算这个数字的平方根import mathi = int(input("请输入一个数值:"))a = math.sqrt(i)print(a)...原创 2020-02-22 23:18:29 · 7010 阅读 · 0 评论 -
给定一个只包含正整数且非空的数组,返回该数组中重复次数最多的前 N 个数字
(返回结果按重复次数从多到少降序排列,N 不存在取值非法的情况)from collections import Counterli = [1, 2, 3, 1, 1, 2, 3, 1, 2, 5, 6, 4, 1, 2, 4, 5, 6]N = 5li_counts = Counter(li)top_three = li_counts.most_common(N)"""most_c...原创 2020-02-22 23:17:26 · 965 阅读 · 0 评论 -
一个活动,活动有开始时间和结束时间,现在要计算活动结束的倒计时,以时分秒的格式显示
计算当前时间与活动时间差,用循环每秒刷新一次import datetimeimport time# 创建活动结束日期activityDateTime = datetime.datetime(2019, 11, 14, 10, 22, 0)print(datetime.datetime.now())"""命令行输出""""""基本语法是通过 {} 和 : 来代替以前的 % 。fo...原创 2020-02-22 23:14:31 · 1365 阅读 · 0 评论 -
有两个磁盘文件 A 和 B, 各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件 C 中
fp = open('test1.txt', encoding='utf8')a = fp.read()fp.close()fp = open('test2.txt', encoding='utf8')b = fp.read()fp.close()fp = open('test3.txt', 'w', encoding='utf8')l = list(a + b)l.sort(...原创 2020-02-22 23:13:05 · 5336 阅读 · 0 评论 -
一个猜数游戏,判断一个人反应快慢
import randomimport timeplay_it = input("do you want to play it.('y' or 'n'):")i = random.randint(0, 10 ** 3)while play_it == 'y': start = time.process_time() a = time.time() guess = ...原创 2020-02-22 23:09:27 · 581 阅读 · 0 评论 -
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
每位数字都加上 5, 然后用和除以 10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。ut("请输入与4位有效整数:")l1 = []l2 = []for j in range(len(i)): l1.append(int(i[j])+5)print(l1)for k in range(len(l1)): l2.append((l1[k]%10))...原创 2020-02-22 22:58:08 · 29579 阅读 · 3 评论 -
结构体变量传递
class student: x = 0 c = 0def f(stu): stu.x = 20 stu.c = 'c'a = student()a.x = 3a.c = 'a'f(a)print(a.x, a.c)原创 2020-02-22 22:52:38 · 676 阅读 · 0 评论 -
输入一个奇数,然后判断最少几个 9 除于该数的结果为整数
i = int(input("请输入一个奇数:"))n = "9"a = Truewhile a: if int(n)%i != 0: n += "9" else: a = False print(f"{len(n)}个9可以被{i}整除")# 法二:zi = int(input('输入一个数字:'))n1 = 1c9...原创 2020-02-22 22:51:04 · 1880 阅读 · 0 评论 -
连接字符串
i = input("请输入字符串1:")j = input("请输入字符串2:")print(i+j)#法二:mylist = ['Brazil', 'Russia', 'India', 'China']print(",".join(mylist))原创 2020-02-22 22:49:14 · 120 阅读 · 0 评论 -
求 0—7 所能组成的奇数个数
sum = 0for i in range(1,9): if i == 1: n = 4 sum += 4 elif 1 < i< 3: sum += 7*n else: sum += 7*(8**(i-2))*nprint(sum)# 法二:sum = 4s = 4for j in ...原创 2020-02-22 22:48:24 · 865 阅读 · 0 评论 -
八进制转换为十进制
n = 0p = input('input a octal number:')for i in range(len(p)): n = n * 8 + ord(p[i]) - ord('0')print(n)原创 2020-02-22 22:44:49 · 837 阅读 · 0 评论 -
809*??=800*??+9*??
其中?? 代表的两位数,809*?? 为四位数,8*?? 的结果为两位数,9*?? 的结果为 3 位数。求?? 代表的两位数,及 809*?? 后的结果。a = 809for i in range(10, 100): b = i * a if 1000 <= b <= 10000 and 8 * i < 100 <= 9 * i: pr...原创 2020-02-20 22:14:51 · 1302 阅读 · 0 评论 -
海滩上有一堆桃子,五只猴子来分
第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的。问海滩上原来最少有多少个桃子?"""当最后一个猴子拿走一份,那么沙滩上就只剩下4份"""i = 0 #为了控制是否满足连续分配了5次j = 1 #假设最...原创 2020-02-20 22:11:16 · 773 阅读 · 0 评论 -
找到年龄最大的人,并输出
#如果是列表:l1 = [1,2,3,4]print(max(l1))#如果是字典法一:dict1 = {"zhagn":18,"li":20,"wang":22}value = dict1.values()print(max(value))法二:person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}m = 'li'fo...原创 2020-02-20 22:10:20 · 9186 阅读 · 0 评论 -
编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n, 当输入 n 为奇数时,调用函数 1/1+1/3+...+1/n
def peven(n): i = 0 s = 0.0 for i in range(2, n + 1, 2): s += 1.0 / i # Python里,整数除整数,只能得出整数,所以需要使用 浮点数 1.0 return sdef podd(n): s = 0.0 for i in range(1, n + 1, 2)...原创 2020-02-20 22:07:40 · 4735 阅读 · 0 评论 -
假如有 10 个小盆友从左到右站成一排,个头不等。老师想让他们按照个头从低到高站好
第一个小盆友只有一个人我们假设是有序的,然后第二个小盆友会跟第一个比,如果第一个高就交换位置。接下来第三个小盆友从第二个位置开始比较,如果没第二个高就交换位置,然后没第一个高也交换位置,保持前边三个小盆友身高有序就好。依次类推,等到最后一个小盆友也转移到合适的位置,整个队列就是有序的了。import randomdef insertion_sort(seq): """ 每次挑选...原创 2020-02-20 22:07:01 · 232 阅读 · 0 评论 -
有n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位
nmax = 50n = int(input('请输入总人数:'))num = []for i in range(n): num.append(i + 1)i = 0 #表示当I等于N的时候,已经将所有的数字循环了一遍,包含变成0的k = 0 #当为三的时候变成0m = 0 #统计有多少个变成了0,当满足n-1的时候就不执行while语句while...原创 2020-02-20 22:05:15 · 374 阅读 · 0 评论 -
有n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数
n = int(input('整数 n 为:'))m = int(input('向后移 m 个位置为:'))array = [1,2,3,4]def move(array, n, m): array_end = array[n - 1] for i in range(n - 1, -1, - 1): #等于取值从最后一个元素去到第一个元素0 arra...原创 2020-02-20 22:04:41 · 667 阅读 · 0 评论 -
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
l = [3,5,8,1,5,0,9,3]max_value = max(l)min_value = min(l)max_index = l.index(max_value)min_index = l.index(min_value)l[0],l[max_index] = l[max_index],l[0]l[-1],l[min_index] = l[min_index],l[-1]...原创 2020-02-20 22:01:31 · 1526 阅读 · 0 评论 -
用 Python 语言将字符串:"k:1|k1:2|k2:3|k3:4",处理成 python 字典:{k:1, k1:2, ... }
cc = "k:1|k1:2|k2:3|k3:4"def cy(cs): dict1 = {} for kv in cs.split("|"): k,v = kv.split(":") dict1[k] = v return dict1a = cy(cc)print(a)原创 2020-02-20 21:58:02 · 2579 阅读 · 0 评论 -
给你一个字符串 a, 输出 a 中奇数位置字符构成的字符串(位置编号从 1 开始)
例如:a=‘xyzwd’则输出:xzd"""分析:从切片的角度去思考"""a = "dfgwere"print(a[::2])原创 2020-02-20 21:56:58 · 3285 阅读 · 0 评论