目录
3、输入数,判断这个数是否是质数(要求使用函数 + for循环)
6、验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除
7、 有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来
8、某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这个自然数
9、编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和
12、计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-.......)
13、给定一个10个元素的列表,请完成排序(注意,不要使用系统api)
14、求 a+aa+aaa+.......+aaaaaaaaa=?
16、给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
17、将10进制数据转换为二进制,并且统计其中的0和1的数量
18、给定一个数组[1,3,1,2,2,8,8],已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素
1、将上节课的英雄商城、登录系统作业,使用函数封装重新完成
1.英雄商城:
data = {} def dljm(): """ 英雄商城登录界面 """ print('\n\t\t 英雄联盟商城登录界面\n') print('~*'*28+'~\n') print('\t'*3+'1. 用户登录'+'\t'*3+'\n') print('\t'*3+'2. 新用户注册'+'\t'*3+'\n') print('\t'*3+'3. 退出系统'+'\t'*3+'\n') print('~*'*28+'~') infor1 = input('(温馨提示)请输入您的选项:') return infor1 def zc(): """ 用户注册 """ global data username = input('注册-请创建用户名:') password = input('注册-请创建密码:') insure = input('注册-确认密码:') if insure == password: data[username] = password input('注册成功!(任意键继续)') else: input('密码确认有误!(任意键继续)') def dl(): """ 用户登录 """ username = input('登录-请输入用户名:') if username in data: password = input('登录-请输入密码:') for key in data: if data[key] == password: input('登录成功!(任意键继续)') login_flag = 1 break else: input('密码错误!(任意键继续)') else: input('该用户名不存在!(任意键继续)') return login_flag def scsy(): """ 英雄商城首页 """ print('\n\n\t\t 英雄联盟商城首页\n') print('~*'*28+'~\n') print('\t'*3+'1. 进入英雄超市'+'\t'*3+'\n') print('\t'*3+'2. 休闲小游戏'+'\t'*3+'\n') print('\t'*3+'3. 退出登录'+'\t'*3+'\n') print('~*'*28+'~') infor2 = input('(温馨提示)请输入您的选项:') return infor2 def scsy_nothing(): """ 商城首页的休闲小游戏功能未开放提示 """ input('该功能暂未开放!(任意键继续)') def yxlb(): """ 英雄商城英雄列表 """ print('\n\n\t\t 英雄商城英雄列表\n') print('~*'*28+'~\n') print('编号 姓名 昵称 价格 库存 描述\n') print('1 李青 盲僧 3000 100 一人之行可灭世,众人之勤可救世\n') print('2 锐雯 放逐之刃 4000 0 她是残忍高效的战士\n') print('3 薇恩 暗夜猎手 3500 0 这个世界不想人们想象的那么美好\n') print('4 扎克 生化魔人 3000 0 即使你没有脊柱,你也必须站起来\n') print('5 杰斯 未来守护者 2500 0 武装着睿智与魅力,你的选择没有错\n') print('~*'*28+'~') infor3 = input('(温馨提示-按任意键返回上一级菜单)请输入您要购买的英雄编号:') return infor3 def yxlb_nothing(): """ 英雄列表的无库存提示 """ input('抱歉,该英雄暂无库存!(任意键继续)') def yxsc(): """ 英雄详情购买页面 """ print('\n\n\t\t\t\t英雄商城购买英雄\n') print('英雄购买票据') print('~*'*38+'~') print() print('\t英雄名称:盲僧(史诗)') print('\t英雄属性:生命值428(+85)/能量值200(+0)/移动速度425/攻击力55.8(+3.2)\n\t\t 攻击速度0.651(+3.1%)/护甲值24(+1.25)/攻击距离125') print() print('\t英雄座右铭:一人之行可灭世,众人之勤可救世!') print('\t英雄价格:3000') print('\t活动折扣;9.5') print() print('插播广告:当风云变色,当流离失所,世界不再是旧日模样\n'+'你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡\n') print('~*'*38+'~') n = int(input(f'折后商品价格为 {3000*9.5} 元,请输入购买数量:')) return n def yxsc_fk(n): """ 英雄商城的付款提示 """ money = float(input(f'(温馨提示)您将购买 {n} 个商品,共计 {3000*9.5*n} 元,请付款:')) return money def yxsc_not_enough(): """ 英雄商城的余额不足提示 """ input('余额不足,请重新付款!(任意键继续)') def yxsc_success(): """ 英雄商城的付款成功提示 """ input('付款成功!下面是您的购买小票(任意键继续):') def gmpj(n,money): """ 订单页面:打印小票 """ print('\n\n\t\t\t\t英雄商城购买英雄\n') print('英雄购买票据') print('~*'*38+'~') print() print('\t英雄名称:盲僧(史诗)') print('\t英雄价格:3000') print('\t活动折扣;9.5') print(f'\t购买数量:{n}') print() print(f'\t应付付款:{3000*9.5*n}') print(f'\t实际付款:{money}') print(f'\t找零:{money - 3000*9.5*n}') print() print('插播广告:当风云变色,当流离失所,世界不再是旧日模样\n'+'你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡\n') print('~*'*38+'~') input('(温馨提示)按任意键返回上一级菜单:') def cuowu(): """ 当用户输入错误命令时的提示 """ input('命令错误,请重新输入!(任意键继续)') while True: login_flag = 0 # 1.英雄商城登录界面 infor1 = dljm() # 用户注册 if infor1 == '2': zc() # 用户登录 elif infor1 == '1': login_flag = dl() # 退出系统 elif infor1 == '3': break else: cuowu() # 2.英雄商城首页 if login_flag == 1: while True: infor2 = scsy() if infor2 == '2': scsy_nothing() elif infor2 == '3': break elif infor2 == '1': # 3.英雄商城英雄列表 while True: infor3 = yxlb() if infor3 == '2' or infor3 == '3' or infor3 == '4' or infor3 == '5': yxlb_nothing() elif infor3 == '1': # 4.英雄详情购买页面 while True: n = yxsc() money = yxsc_fk(n) if money < 3000*9.5*n: yxsc_not_enough() else: yxsc_success() # 5.订单页面:打印小票 gmpj(n,money) break else: break else: cuowu()
2.系统登录:
data = {} def dlzc(): """ 登录注册界面 """ infor = input('请输入您要进行的操作(1.注册 2.登录 3.退出):') return infor def zc(): """ 用户注册 """ global data username = input('注册-请创建用户名:') password = input('注册-请创建密码:') insure = input('注册-确认密码:') if insure == password: data[username] = password print('注册成功!') else: print('密码确认有误!请重新输入') def dl(): """ 用户登录 """ username = input('登录-请输入用户名:') if username in data: password = input('登录-请输入密码:') for key in data: if data[key] == password: print('登录成功!') break else: print('密码错误!') else: print('该用户名不存在!') def cuowu(): """ 当用户输入错误命令时的提示 """ print('命令错误,请重新输入!(任意键继续)') while True: infor = dlzc() if infor == '1': zc() elif infor == '2': dl() elif infor == '3': break else: cuowu()
2、判断以下哪些不能作为标识符(BCDF)
A、a B、¥a C、_12 D、$a@12 E、false F、False
3、输入数,判断这个数是否是质数(要求使用函数 + for循环)
def isPrime(x): """ 判断是否为质数 """ if x == 1: return False for i in range(2,x//2 + 1): if x % i == 0: return False return True x = int(input('请输入一个正整数:')) if isPrime(x): print(f'{x}是质数') else: print(f'{x}不是质数')
结果:
4、求50~150之间的质数是那些?
def isPrime(x): """ 判断是否为质数 """ if x == 1: return False for i in range(2,x//2 + 1): if x % i == 0: return False return True print('50-150的所有质数有:') for x in range(50,151): if isPrime(x): print(x,end = ' ')
结果:
5、打印输出标准水仙花数
描述:水仙花数是指一个三位数,它的每个位上的数字的三次幂之和等于它本身
示例:1^3+5^3+3^3 = 153
def isSXH(x): ''' 判断是否为水仙花数 ''' if (x//100)**3 + (x%100//10)**3 + (x%10)**3 == x: return True print('水仙花数共有:') for x in range(100,1000): if isSXH(x): print(x,end=' ')
结果:
6、验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除
def iszhengchu9(x): ''' 验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除 ''' sum_x = 0 ls = list(str(x)) for i in ls: num = int(i) sum_x += num if x > 9 and (x - sum_x)%9 == 0: return True else: return False x = int(input('请输入任意大于9的整数以验证:')) if iszhengchu9(x): print(f'{x}验证成功') else: print(f'{x}验证失败')
结果:
7、 有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来
def iszjzfs(nume,deno): ''' 判断是否为最简真分数 ''' a = abs(nume) b = abs(deno) c = 0 if a < b and b != 0: while b % a != 0: c = b % a b = a a = c if c == 1 or a == 1: return True print('分子与分母的乘积都是140的最简真分数有(从小到大排序):') for deno in range(140,0,-1): for nume in range(1,deno): if nume * deno == 140 and iszjzfs(nume,deno): print(f'{nume}/{deno}',end=" ")
结果:
8、某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这个自然数
def onenum(): ''' 求自然数:被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1 ''' num = 0 while True: x = num // 80 if x % 7 == 0 and x % 2 == 1 and x % 3 == 1 and x % 4 == 1 and x % 5 == 1 and x % 6 == 1: return num num += 1 x = onenum() print(f'所求自然数为:{x}')
结果:
9、编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和
def the_num(num): ''' 判断数:它除以11所得的商是否等于它各位数字之和 ''' a = num // 11 b = num//100 + num%100//10 + num%10 if a == b: return True print('所求三位数有:') for num in range(100,1000): if the_num(num): print(num,end=" ")
结果:
10、求1~100之间不能被3整除的数之和
def func(num): ''' 求不能被3整除的数 ''' if num % 3 == 0: return False else: return True sum_x = 0 for x in range(1,101): if func(x): sum_x += x print(f'1~100之间不能被3整除的数之和为:{sum_x}')
结果:
11、给定一个正整数N,找出1到N(含)之间所有质数的总和
def isPrime(x): """ 判断是否为质数 """ if x == 1: return False for i in range(2,x//2 + 1): if x % i == 0: return False return True N = int(input('请输入一个正整数N:')) sum_Prime = 0 for x in range(1,N+1): if isPrime(x): sum_Prime += x print(f'1到N(含)之间所有质数的总和为:{sum_Prime}')
结果:
12、计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-.......)
def PI(): ''' 计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-.......) ''' n = 0 sum_PI = 0 for i in range(1,10000,2): sum_PI += ((-1)**n)*(1/i) n += 1 PI = 4*sum_PI return PI print(f'PI = {PI()}')
结果:
13、给定一个10个元素的列表,请完成排序(注意,不要使用系统api)
def selection_sort(ls=[]): ''' 选择排序法 ''' for i in range(len(ls)): index_min = i for j in range(i+1,len(ls)): if ls[index_min] > ls[j]: index_min = j ls[index_min],ls[i] = ls[i],ls[index_min] return ls ls = [23,5,12,67,64,87,3,1,2,28] print(f'原列表为:{ls}') print(f'选择排序法排序后的列表为:{selection_sort(ls)}')
结果:
14、求 a+aa+aaa+.......+aaaaaaaaa=?
其中a为1至9之中的一个数,项数也要可以指定
def one_sum(a,n): ''' 求 a + aa + aaa +.......+ aaaaaaaaa = ? (其中a为1至9之中的一个数,项数可以指定) ''' sum_a = 0 for i in range(1,n+1): num = int(f'{a}'*i) sum_a += num return sum_a a = int(input('请输入一个在区间[1,9]的正整数:')) n = int(input('请输入指定的项数:')) print(f'所求多项式的和为:{one_sum(a,n)}')
结果:
15、合并两个有序数组,合并后还是有序列表
def selection_sort(ls=[]): ''' 选择排序法 ''' for i in range(len(ls)): index_min = i for j in range(i+1,len(ls)): if ls[index_min] > ls[j]: index_min = j ls[index_min],ls[i] = ls[i],ls[index_min] return ls ls_1 = [1,3,5,7,9] ls_2 = [2,4,6,8,10] print(f'原有序列表1为:{ls_1}') print(f'原有序列表2为:{ls_2}') ls_1.extend(ls_2) print(f'合并后的有序列表为:{selection_sort(ls_1)}')
结果:
16、给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
def even_before_odd(ls = []): ''' 将一个非负整数数组中的所有偶数都放在奇数元素之前 ''' for i in range(len(ls)): if ls[i] % 2 != 0: for j in range(i+1,len(ls)): if ls[j] % 2 == 0: ls[i],ls[j] = ls[j],ls[i] break return ls ls = [1,2,3,4,5,6,7,8,9] print(f'原列表为:{ls}') print(f'将偶数置于奇数前,列表变为:{even_before_odd(ls)}')
结果:
17、将10进制数据转换为二进制,并且统计其中的0和1的数量
def ten_to_two(num): ''' 将十进制数据转换为二进制,并且统计其中的0和1的数量 ''' binary_num = bin(num) ls = list(str(binary_num))[2:] count_0 = 0 count_1 = 0 for i in ls: if int(i) == 0: count_0 += 1 else: count_1 += 1 return count_0,count_1 num = int(input('请输入一个整数:')) print(f'将{num}转换为二进制为:{bin(num)[2:]}') print(f'其中0的数量为:{ten_to_two(num)[0]}个') print(f'其中1的数量为:{ten_to_two(num)[1]}个')
结果:
18、给定一个数组[1,3,1,2,2,8,8],已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素
def notpair(ls): ''' 找出不成对的元素 ''' temp = 0 for i in ls: temp ^= i return temp ls = [1,3,1,2,2,8,8] print(f'{ls}中不成对的元素为:{notpair(ls)}')
结果: