python 基础100例摘选

python 基础100例摘选
参照:https://blog.csdn.net/songlh1234/article/details/91391981
部分有作者自己的修改
供参考

"""
题目001:
有四个数字1,2,3,4可以组成多少个互不相同的无重复的三位数
"""def test001():arr = []for i in range(1, 5):for j in range(1, 5):for k in range(1, 5):temp = i*100+j*10+kif i != j and i != k and j != k:arr.append(temp)print(arr, len(arr))"""
题目002:企业发放的奖金根据利润(I)的多少来提成:
低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%;
高于100万元时,超过100万元的部分按1%提成。
从键盘输入当月利润I,求应发放奖金总数?
"""# 直接使用if-elif-else
def test002():profits = int(input('请输入利润:'))if profits <= 100000:bonus = profits*0.1elif 100000 < profits <= 200000:bonus = 100000*0.1 + (profits-100000)*0.075elif 200000 < profits <= 400000:bonus = 100000 * 0.175 + (profits-200000)*0.05elif 400000 < profits <= 600000:bonus = 100000 * 0.225 + (profits-400000)*0.03elif 600000 < profits <= 1000000:bonus = 100000 * 0.255 + (profits-600000)*0.015else:bonus = 100000 * 0.27 + (profits-1000000)*0.01print('the bonus is {}'.format(bonus))# 使用数轴的方法
def test002_1():profits = int(input('请输入利润:'))# 奖金分界表arr = [1000000, 600000, 400000, 200000, 100000, 0]# 对应的提成率rate = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]bonus = 0for i in range(len(arr)):if profits > arr[i]:bonus += (profits-arr[i])*rate[i]profits = arr[i]print(bonus)"""
题目003:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
"""# 根据题目逻辑直接来
import mathdef test003():for a in range(1000):if math.sqrt(a+100) % 1 == 0 and math.sqrt(a+168+100) % 1 == 0:print(a)"""
题目004:输入某年某月某日,判断这一天是这一年的第几天?
"""# 使用time模块中的strptime()和struct_time()的属性tm_yday,利用strptime将输入的日期转化为struct_time的时间格式,再利用属性tm_yday得到一年中哪一天
from time import strptimedef test004():year, month, day = input('请输入年份:'), input('请输入月份:'), input('请输入日:')time_str = year + '-' + month + '-' + dayyday = strptime(time_str, '%Y-%m-%d').tm_ydayprint(f'{year}年{month}月{day}日是{year}年中的第{yday}天')"""
题目005:输入三个整数x,y,z,请把这三个数由小到大输出。
"""# 方法一:冒泡
def test005_1():x, y, z = int(input('请输入第一个数:')), int(input('请输入第二个数:')), int(input('请输入第三个数:'))lsit = [x, y, z]for j in range(len(lsit)-1):for i in range(1, len(lsit)):if lsit[i-1] > lsit[i]:temp = lsit[i]lsit[i] = lsit[i-1]lsit[i-1] = tempfor a in lsit:print(a)# print(l)# 方法二:使用sorteddef test005_2():x, y, z = int(input('请输入第一个数:')), int(input('请输入第二个数:')), int(input('请输入第三个数:'))l1 = [x, y, z]print('=='*5, 'sorted()', '=='*5)for a in sorted(l1):print(a)return"""
题目006:斐波那契数列。
"""# 不使用递归
def fob1(n):a, b = 0, 1i = nwhile i >= 0:a, b = b, a + bprint(a)i -= 1def test006():fob1(10)# 使用递归
def fob(n):if n == 1 or n == 2:return 1else:return fob(n-1)+fob(n-2)def test006_2():for a in range(1, 11):print(fob(a))return"""
题目007:将一个列表的数据复制到另一个列表中。
说明:这里的复制指的是复制后两个列表的内存地址不一样的,不是直接像a=b这样
"""# 使用copy模块中的deepcopy(),也可以使用列表的copy()方法
import copydef test007():a = [1, 2, 3, 4, 5, 6, 7, 8, 9]b = copy.deepcopy(a)print(id(a), '\n', id(b))"""
题目008:题目:输出 9*9 乘法口诀表。
"""# 双重for循环
def test008():for i in range(1, 10):for j in range(i, 10):string = f'{i}×{j}={i*j}'print('%-7s' % string, end=' ')print(end='\n')"""
题目010:暂停一秒输出,并格式化当前时间。
"""
# 使用time模块的sleep(),strftime(),localtime()
import timedef test010():a = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))print(a)print('休眠5秒')time.sleep(5)b = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))print(b)"""
题目011:古典问题:
有一对兔子,
从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子。
假如兔子都不死。
问每个月的兔子总数为多少?
"""def test011():m1 = 1m2 = 0mm = 0for i in range(1, 13):mm = mm+m2m2 = m1m1 = mmprint(i, '-->', m1+m2+mm)"""
题目012:判断101-200之间有多少个素数,并输出所有素数
"""
# 素数的程序逻辑:素数不能被2到它本身开方之间的数整除。
from math import sqrtdef test012():print('101---200之间的素数为:')for num in range(101, 201):for i in range(2, int(sqrt(num)+1)):if num % i == 0:breakelse:print(num)"""
题目013:打印出所有的"水仙花数",
所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
"""
# 此题与四叶草数是相同的思路,四叶草数指的是一个四位数。def test013():for num in range(100, 1000):# 百位上的数h = num//100# 十位上的数t = (num-100*h)//10# 个位上的数o = num % 10if h**3+t**3+o**3 == num:print(f'由于{h}³+{t}³+{o}³={num},故{num}是一个水仙花数。')"""
题目014:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
"""def test014():import mathnum = int(input('输入一个整数:'))arr = []while num > 1:for i in range(2, int(math.sqrt(num)+1)):if num % i == 0:arr.append(i)num = num // ibreakelse:arr.append(num)breakprint(arr)"""
题目015:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
"""def test015():score = int(input('请输入成绩:'))if 100 >= score >= 90:print(f'{score}的评价为:A')elif 60 <= score <= 89:print(f"{score}的评价为:B")elif 0 <= score < 60:print(f'{score}的评价为:C')else:print('不好意思,你输入的成绩有误,请重新输入!!')return test015()"""
题目016:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
思路:使用字符串的isalpha()--》判断是否为中英文,isspace()-->判断是否为空格,isdigit()-->判断是否为数字,等方法。
"""def test016():string = input('请输入一串字符串:')letters, space, digit, others = 0, 0, 0, 0for i in string:if i.isalpha():letters += 1elif i.isspace():space += 1elif i.isdigit():digit += 1else:others += 1print(f"char = {letters};space = {space};digit = {digit};others = {others}")"""
题目017:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
"""# 为了提高大数的运算效率这里使用numpy.sum运算
def test017():import numpy as npa = input('请输入a的值:')add_times = int(input('请输入相加的次数:'))num_arr = []for i in range(1, add_times+1):num_arr.append(int(a*i))num_sum = np.sum([num_arr])num_string = '+'.join([str(i) for i in num_arr])# print(f'等式为:{num_string}')# print(f'总和为:{num_sum}')print(f'结果为:{num_string} = {num_sum}')"""
题目018:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
"""def test018():"""思路:先求出所有的约数(因数),再判断其和是否相等。:return:"""for num in range(1, 1000):arr = []for i in range(1, num):if num % i == 0:arr.append(i)if sum(arr) == num:print(num)"""
题目019:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
"""def test019():high = 100n = 1total = 0while n <= 10:total += highhigh /= 2total += high  # 第10次落地时,会多算一次反弹的高度,故在得出总里程时需减掉highn += 1print(f'第10次落地时,经过了{total-high}米,反弹了{high}米。')"""
题目021:猴子吃桃问题
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
"""def test020():day = 10num = 1while day > 0:day -= 1num = (num+1)*2print(num)"""
题目021:两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。有人向队员打听比赛的名单。
a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单
"""def test021():"""思路:根据题意可知,a,b,c从[x,y,z]中找人比赛,同不能同时选择同一个人比赛,再者根据题目的要求即可求出唯一的打法:return:"""team_a = ['x', 'y', 'z']for a in team_a:for b in team_a:for c in team_a:if a != b and a != c and c != b:if a != 'x' and c != 'x' and c != 'z':print(f'a与{a}比赛;b与{b}比赛;c与{c}比赛。')"""
题目022:
打印出如下图案(菱形):*********
****************
"""def test022():"""思路:使用绝对值运算,将[0,1,2,3,4,5,6]变为[3,2,1,0,1,2,3]:return:"""num = 7for i in range(num):blank = abs(num//2-i)print(' '*blank+'*'*(num-2*blank)+' '*blank)"""
题目023:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
"""def test023():"""简单粗暴,直接根据题意进行:return:"""a, b, sum_ab = 2, 1, 0for i in range(20):sum_ab += a/ba = a + bb = a - bprint(f'前20 项和为{sum_ab}')"""
题目024:求1+2!+3!+...+20!的和。
"""def test024():"""思路:1、使用for循环实现:return:"""print('---'*8+'方法一'+'---'*8)sum_1, product = 0, 1for num in range(1, 21):product *= numsum_1 += productprint(f'和为{sum_1}')"""
题目025:利用递归求解5!
"""def func025(n):if n <= 1:return nelse:return n*func025(n-1)def test025():print(func025(5))"""
题目026:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
"""def output(s, l1):if l1 == 0:returnprint(s[l1-1])output(s, l1-1)def test026():s = input('the string is :')l1 = len(s)output(s, l1)"""
题目027:有5个人坐在一起,
问第五个人多少岁?他说比第4个人大两岁。
问第4个人,他说比第3个人大两岁。
问第3个人,又说比第2个人大两岁。
问第2个人,说比第1个人大两岁。
最后问第一个人,他说是10岁。
请问第五个人多大?
"""# def test027():
#     """
#     普通方法
#     :return:
#     """
#     m1 = 10
#     m2 = m1 + 2
#     m3 = m2 + 2
#     m4 = m3 + 2
#     m5 = m4 + 2
#     print(f'第五个人年龄为:{m5}')
def age(n):if n == 1:return 10else:return age(n-1) + 2def test027():"""使用递归:return:"""print(f'第五个人年龄为:{age(5)}')"""
题目028:给一个不多于5位的正整数,要求:
一、求它是几位数,
二、逆序打印出各位数字。
"""def is_nums(nums):"""除了以下的方法判断位数,还可以直接使用len()函数求出长度,但需先将int类型转为str类型:param nums::return:"""l1 = [10000, 1000, 100, 10, 1]# l2 = [5, 4, 3, 2, 1]l2 = ['五', '四', '三', '两', '一']for n, num in enumerate(l1):if 1 <= nums//num <= 9:print(f'{nums}是{l2[n]}位数')def reverse_nums(nums):nums = nums[::-1]# nums = str(nums)[::-1]print('逆序打印正整数:')for s in nums:print(s)def test028():nums = input('请输入一个不大于五位的正整数:')is_nums(int(nums))reverse_nums(nums)"""
题目029:一个5位数,判断它是不是回文数。
回文数:正反读是一样的正整数
即12321是回文数,个位与万位相同,十位与千位相同。
"""def test029():nums = input('请输入需要判断的五位数:')if len(nums) == 5:nums_reverse = nums[::-1]if nums == nums_reverse:print(f'{nums}是回文数')else:print(f'{nums}不是回文数')else:print('你输入的数字不是五位数,请重新输入!!')test029()"""
题目030:请输入星期几的第一个字母来判断一下是星期几,
如果第一个字母一样,则继续判断第二个字母。
"""def test030():week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']inp = ''while 1:arr = []inp = inp + input('请输入一个字母:')for day in week:  # 挑出满足输入的星期if inp == day[:len(inp)]:arr.append(day)if len(arr) == 1:  # 只剩一个,说明唯一,可以输出结果print('以%s开头的单词是:%s' % (inp, arr[0]))inp = ''elif len(arr) == 0:  # 一个都没有说明输错了,需要重新输入print('没有%s开头的单词' % inp)inp = ''"""
题目031:按相反的顺序输出列表的值。
"""def list_reverse(l):"""一共有两种方法:1、切片2、使用列表的reverse()方法:param l::return:"""# 切片print('--'*8, '方法一', '--'*8)l_r = l[::-1]print(l_r)# for v in l_r:#     print(v)# reverse()方法print('--' * 8, '方法二', '--' * 8)l.reverse()print(l)def test031():l1 = [1, 52, 55, 77, 12, 122]list_reverse(l1)"""
题目032:按逗号分隔列表
"""def test032():"""join函数的使用:return:"""lt = ['55', '88', '66', '44', '11']s = ','.join(lt)print(f'the result is :{s}')"""
题目033:求100之内的素数。
"""def test033():import mathfor nums in range(2, 101):for n in range(2, int(math.sqrt(nums)+1)):if nums % n == 0:breakelse:print(nums)"""
题目034:对10个数进行排序
"""def nums_sort01(list_sort):"""使用python内置函数:param list_sort::return:"""print(f'排序前:\n{list_sort},\n排序后为:\n{sorted(list_sort)}')def nums_sort02(list_sort):"""使用算法进行排序,这里使用了冒泡算法:param list_sort::return:"""print(f'排序前:\n{list_sort}')for i in range(len(list_sort)-1):for j in range(len(list_sort)-i-1):if list_sort[j] > list_sort[j+1]:list_sort[j], list_sort[j+1] = list_sort[j+1], list_sort[j]print(f'排序后:\n{list_sort}')def test034():list1 = [55, 51, 54, 1, 21, 22, 99, 0, 25, 78]nums_sort01(list1)# nums_sort02(list1)"""
题目035:求一个3*3矩阵主对角线元素之和
"""def test035():"""思路:利用列表的索引进行运算,需注意是否为奇数矩阵,奇数矩阵会重复中间的元素,要剔除。:return:"""array = [[2, 4, 6], [1, 3, 5], [7, 8, 9]]sum_a = 0n = len(array)# 从左上到右下对角线for i in range(n):sum_a += array[i][i]# 从左下到右上对角线for i in range(n):sum_a += array[i][n-i-1]# 由于奇数矩阵中间元素为重复元素,需剔除if n % 2 == 1:sum_a -= array[n//2][n//2]print(f'主对角线元素之和为{sum_a}')"""
题目036:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
"""def test036():"""题意为插入排序算法的思想:return:"""list_sorted = [1, 11, 22, 33, 44, 55, 66, 77, 88, 99]print(f'已排好序的数组为{list_sorted}')nums = int(input('请输入需要插入的数字:'))for i in range(len(list_sorted)):if list_sorted[i] > nums:list_sorted.insert(i, nums)break# else:#     list_sorted.insert(i, nums)#     breakelse:list_sorted.append(nums)print(f'{nums}已插入数组中:\n{list_sorted}')"""
题目037:两个3*3的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:
X = [[12, 7, 3],[4, 5, 6],[7, 8, 9]]
Y = [[5, 8, 1],[6, 7, 3],[4, 5, 9]]
"""def test037():"""实现n*n矩阵的相加算法,思路:使用for循环即可;其实可以使用numpy库直接进行矩阵的所有运算:return:"""x = [[12, 7, 3],[4, 5, 6],[7, 8, 9]]y = [[5, 8, 1],[6, 7, 3],[4, 5, 9]]sum_arr = [[0, 0, 0],[0, 0, 0],[0, 0, 0]]for i in range(len(x)):for j in range(len(y)):sum_arr[i][j] = x[i][j] + y[i][j]print(f'{x}和{y}矩阵的和为{sum_arr}')def test037_01():"""使用第三方库numpy进行矩阵的运算:return:"""# 需先下载numpyku--》pip install numpyimport numpy as npx = np.array([[12, 7, 3], [4, 5, 6], [7, 8, 9]])y = np.array([[5, 8, 1], [6, 7, 3], [4, 5, 9]])sum_arr = x + yprint(f'矩阵\n{x.__str__()}\n和\n{y.__str__()}\n的和为\n{sum_arr.__str__()}')  # 这里使用__str__()直接输出矩阵,不然会带有array()符号"""
题目038:统计 1 到 100 之和。
"""def test038():"""思路:很简单,直接遍历相加:return:"""sum_nums = 0for i in range(1, 101):sum_nums += iprint(f'1到100 的和为{sum_nums}')# 以上可以简化为一行代码print('--'*8)print(f'1到100的和为{sum(i for i in range(1,101))}')"""
题目039:求输入数字的平方,如果平方运算后小于 50 则退出。
"""def test039():"""思路:考察 break 的使用:return:"""while True:nums = float(input('请输入数字:'))nums_square = nums ** 2print(f'{nums}的平方为{nums_square}')if nums_square < 50:print(f'由于{nums}的平方小于50,故程序退出')break"""
题目040:两个变量的互换
"""def test040():"""思路:经典问题,其他语言需要设置临时中间变量,python可以更简单:return:"""nums01, nums02 = float(input('请输入第一个数字:')), float(input('请输入第二个数字:'))print('--------临时中间变量--------')temp = nums01nums01 = nums02nums02 = tempprint(f'变量互换后:\n nums01-->{nums01},\n nums02-->{nums02}')print('---------python特有方法----------')nums03, nums04 = float(input('请输入第一个数字:')), float(input('请输入第二个数字:'))nums03, nums04 = nums04, nums03print(f'互换后的结果:\n nums03-->{nums03},\n nums04-->{nums04}')"""
题目041:数字比较:输入两个数字,输出两个数字的大小比较情况
"""def test041():nums01, nums02 = float(input('请输入第一个数字:')), float(input('请输入第二个数字:'))if nums01 > nums02:print(f'{nums01}大于{nums02}')elif nums01 < nums02:print(f'{nums01}小于{nums02}')elif nums01 == nums02:print(f'{nums01}等于{nums02}')"""
题目042:使用lambda来创建匿名函数。
"""def test042():"""练习lambda函数的用法;lambda函数会与高级内置函数filter()和map()一起使用lambda语法:lambda 变量 : 函数需要进行的操作实例:输入一个数组,输出其元素平方的数组:return:"""list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]list2 = list(map(lambda x: x**2, list1))  # map(func, iterable)函数:将func函数作用于可迭代对象iteratorprint(f'the result is :{list2}')"""
题目043:输出一个随机数
"""def test043():"""对于标准库random库的使用,所有用法如下:return:"""import random# 随机数操作random.random()  # 0.85415370477785668   # 随机一个[0,1)之间的浮点数random.uniform(0, 100)  # 18.7356606526         # 随机一个[0,100]之间的浮点数random.randrange(0, 100, 2)  # 44                    # 随机一个[0,100)之间的偶数random.randint(0, 100)  # 22                    # 随机一个[0,100]之间的整数# 随机字符操作seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-"  # 任意字符串(作为随机字符种子库)random.choice(seed)  # 'd'               # 随机一个字符random.sample(seed, 3)  # ['a', 'd', 'b']   # 随机多个字符(字符可重复)''.join(random.sample(seed, 3))  # '^f^'             # 随机指定长度字符串(字符可重复)# 随机列表操作random.shuffle(list)  # 列表中的元素打乱"""
题目044:取一个整数a从右端开始的4-7位。
"""def test044():"""思路:将整数先转化为字符串,利用字符串的切片用法,最后在转回整数:return:"""# nums = input('请输入一个大于10位的整数:')nums = 123456789135792468nums_str = str(nums)print(f'{nums}从右端开始的4--7位是:{nums_str[-7:-3]}')"""
题目045:计算字符串长度。
"""def test045():"""思路:使用python内置函数len():return:"""string = input('请输入一个字符串:')print(f'字符串{string}的长度为{len(string)}')"""
题目046:打印出杨辉三角形(前10行):
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1
"""def test046():"""不太会,参照会答案:return:"""arr = [1]print(1)while len(arr) < 10:a = [0] + arrb = arr + [0]arr = [a[i]+b[i]for i in range(len(a))]s = [str(i) for i in arr]print(' '.join(s))"""
题目047:查找字符串。
"""def test047():string = input('请输入一串字符串:')s = input('请输入需要查找的一个字母或字符串:')if string.find(s) >= 0:print(f'你所查找的字符在{string.find(s)+1}位开始')else:print('你输入的查找条件有误!!')"""
题目048:输入3个数a,b,c,按大小顺序输出。
"""def test048():arr = []for i in range(3):a = input('请输入数字:')arr.append(int(a))arr.sort(reverse=True)  # reverse=True -->降序print(f'排序后的结果为:{arr}')"""
题目049:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
"""def test049():arr = eval(input('请输入一个数组:'))max_index = arr.index(max(arr))min_index = arr.index(min(arr))arr[0], arr[max_index] = arr[max_index], arr[0]arr[-1], arr[min_index] = arr[min_index], arr[-1]print(f'改变后的数组为:{arr}')"""
题目050:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
"""def test050():"""使用列表的切片即可简单完成:return:"""arr = eval(input('请输入一个数组:'))m = int(input('请输入需要移动的位数:'))new_arr = arr[-m:] + arr[:-m]print(f'变化后的结果:{new_arr}')"""
题目051:
有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
"""def test051():"""思路:参照别人的排队进门的思路:return:"""n = int(input('请输入参加的人数:'))# 先进行排序arr = list(range(1, n+1))count, a, b = 0, arr, []  # 计数器count,门外队伍a,门内队伍b# 开始排队进门while len(a+b) > 1:num, count = a.pop(0), count + 1if count % 3 != 0:  # 报数为3 的淘汰b.append(num)   # 没被淘汰的按顺序排好队伍bif len(a) == 0:  # 当门外队伍a没人时,则将门内队伍b变为门外队伍a,重新开始排队a, b = b, []print(f'最后留下的人的序号是{a[0]}')"""
题目052:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
"""def test052():"""函数的定义及调用:return:"""def get_str_length(s):return len(s)if __name__ == '__main__':s = 'asdasdas'print(get_str_length(s))"""
题目053:编写input()和output()函数输入,输出5个学生的数据记录。
"""def test053():"""依旧是函数的定义和调用:return:"""# import sys# 定义input()函数def inp(data):name = input('请输入学生的姓名:')score = float(input('请输入该学生的成绩:'))data[name] = scoreprint('录入成功!!')return data# 定义output()函数def outp(data):name = input('请输入需要查询的学生姓名:')print(f'学生{name}的成绩为{data[name]}')if __name__ == '__main__':data = dict()while True:a = input('请确认是输入数据(i);查询数据(o),退出程序(e):')if a.upper() == 'I':inp(data)elif a.upper() == 'O':outp(data)elif a.upper() == 'E':return Falseelse:print('输入错误!!请重新输入!!')"""
题目054:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
"""def func(n):if n % 2 == 0:list1 = [1/i for i in range(1, n+1) if i % 2 == 0]return list1, sum(list1)else:list2 = [1/i for i in range(1, n+1) if i % 2 != 0]return list2, sum(list2)def test054():n = int(input('请输入n的值:'))arr, sum_arr = func(n)print(f'{arr}的和为{sum_arr}')"""
题目055:
找到年龄最大的人,并输出。
person = {"Joe":18,"Mike":50,"Hajo":22,"Shanel":23}
"""def test055():"""考察字典类型值(value)的比较,解法利用一下lambda匿名函数,先对字典按value 排序,在输出最大值:return:"""person = {'Joe': 18, 'Mike': 50, 'Hajo': 22, 'Shanel': 22}sorted_person = sorted(person.items(), key=lambda x: x[1], reverse=True)print(f'年龄最大的是{sorted_person[0][0]};年龄为{sorted_person[0][1]}岁。')"""
题目056:
海滩上有一堆桃子,五只猴子来分。
第一只猴子把这堆桃子平均分为五份,多了一个,
这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,
它同样把多的一个扔入海中,拿走了一份,
第三、第四、第五只猴子都是这样做的,
问海滩上原来最少有多少个桃子
"""def test056():"""暂时pass:return:"""pass"""
题目057:
809*??=800*??+9*?? 其中??代表的两位数, 
809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。
求??代表的两位数,及809*??后的结果。
"""def test057():"""没啥可讲的,按题意直接算:return:"""for num in range(10, 100):if 1000 <= 809 * num <= 9999 and 10 <= 8 * num <= 99 and 100 <= 9 * num <= 999:print(f'??为{num};809 * ?? 为809 * {num}={809*num}')"""
题目058:进制之间的相互转换
"""def test058():"""直接上知识点,各个进制的转换函数:return:"""nums = int(input('请输入需要转换的十进制数值:'))print(f'十进制转二进制:{bin(nums)}')print(f'十进制转八进制:{oct(nums)}')print(f'十进制转16进制:{hex(nums)}')print('-----其他-----')print(f'八进制转十进制:{int(str(nums),8)}')  # int(x,base=10) x:str类型的数值,base:进制,默认为10即十进制print(f'二进制转十进制:{int(str(nums),2)}')print(f'16进制转十进制:{int(str(nums),16)}')"""
题目059:求0—7所能组成的奇数个数。
"""def test059():"""需要用到排列组合库:itertools,先pass:return:"""pass"""
题目060:计算字符串中子串出现的次数
"""def test060():string = input('请输入字符串:')str_s = input('请输入需要统计的子串:')if str_s in string:print(f'{str_s}在{string}中出现了{string.count(str_s)}次!')else:print(f'你输入的子串{str_s}不在{string}中')"""
题目061:从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。
"""def test061():"""文件的读取,两种方式:1、使用open()函数,需要在使用完后使用.close()关闭内存2、使用with open.. as ..;(推荐):return:"""while True:a = input('请输入内容:')if a != '#':with open('test061.txt', 'a+', encoding='utf-8') as f:f.write(a+'\n')else:break"""
题目062:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。
"""def test062():"""使用字符串的upper()方法即可将小写转换为大写:return:"""string = input('请输入字符串:')with open('test062.txt', 'a+', encoding='utf-8') as f:f.write(string.upper()+'\n')print('写入成功!!')"""
题目063:
有两个磁盘文件A和B,各存放一行字母,
要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。
"""def test063():"""必须在该程序的目录下有test063_A.txt和test063_B.txt两个文件,内容自定:return:"""with open('test063_A.txt', 'r+', encoding='utf-8')as f:a = f.read()print(f'test063_A中的内容为{a}')with open('test063_B.txt', 'r+', encoding='utf-8')as f:b = f.read()print(f'test063_B中的内容为{b}')with open('test063_C.txt', 'w+') as f:f.write(a+b)print('内容写入test063_C.txt 成功!!')"""
题目064:列表转换为字典。
"""def test064():"""如果是单个列表变为字典,使用enumerate获取列表的下标index和值value,在转换为字典即可;如果是两个列表组合成一个字典,则使用zip()函数,将两个列表转换为对应的元组,再转换为字典。:return:"""print('-----------单个列表转换为字典-----------')l1 = ['Hajo', 'Shanel', 'Komry', 'John']d1 = dict()for i, v in enumerate(l1):d1[i] = vprint(f'转换结果为:{d1}')print('----------两个字典组合转换为字典----------')score_l = [99, 100, 98, 95]d2 = dict()for i, v in zip(l1, score_l):d2[i] = vprint(f'转换结果为{d2}')if __name__ == '__main__':def program_test():index = input("请输入需要运行的程序序号;例如:test001,输入001:")program_name = 'test'+index+'()'try:return eval(program_name)except NameError:print('程序序号输入有误;请重新输入!!!')return program_test()program_test()


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部