1.“吃饭,睡觉,打豆豆”是网络上最为流行的小笑话之一,这则笑话的具体内容如下。
有个记者去南极采访一群企鹅。
他问第一只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,打豆豆!”接着又问第二只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,打豆豆!”接着又问第三只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,打豆豆!”…记者带着困惑问其他的企鹅,答案都一样,就这样一直问了99只企鹅。当走到第100只小企鹅旁边时,记者问他:“你每天都做什么?”那只小企鹅回答:“吃饭,睡觉。”记者惊奇的又问:“你怎么不打豆豆?”小企鹅撇着嘴:,瞪了记者一眼说:“我就是豆豆!”请编写一个程序,要求如下:
(1)编写一个函数用来描述记者与这100只企鹅对话的全过程,其输出格式为
记者问第1只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,打豆豆!”
记者问第2只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,打豆豆!”

记者问第99只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,打豆豆!”
记者问第100只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,我就是豆豆!”

(2)在主程序下测试该函数。

def interview():for n in range(1, 100):print('记者问第{}只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,打豆豆!”'.format(n))print('记者问第100只企鹅:“你每天都做什么?”企鹅说:“吃饭,睡觉,我就是豆豆!”')interview()

输出结果

2.以下为输出韩国流行歌曲Nobady一段歌词(有修改)的代码,

print(‘I want nobody nobody but you’)
print(‘I want nobody nobody but you’)
print(‘How can i be with another’)
print(“I don’t want any other”)
print(‘I want nobody nobody but you’)
print(‘I want nobody nobody but you’)
print(‘I want nobody nobody but you’)

请将上述代码中的重复部分抽象(定义)成一个函数,并在主程序中调用该函数,以使源代码显得更简洁一些。

def nobody(n):for i in range(n):print('I want nobody nobody but you')nobody(2)
print('How can i be with another')
print("I don't want any other")
nobody(3)

输出结果

I want nobody nobody but you
I want nobody nobody but you
How can i be with another
I don't want any other
I want nobody nobody but you
I want nobody nobody but you
I want nobody nobody but you

3.编写isOdd()函数,该函数应有一个整数参数,如果该参数为奇数,函数返回True,否则返回Flase。最后在主程序中测试该函数。

def isOdd(n):return n % 2 != 0n = int(input('输入一个整数:'))
print(f'{n}是奇数') if isOdd(n) else print(f'{n}不是奇数')

输出样例

输入一个整数:62
62不是奇数

4.按如图所示的流程进行计算,若开始输入的x的值为正数,最后输出的结果为656,请编程输出符合条件的x的值。

def fun(n):while (n - 1) / 5 > 0:n = (n - 1) / 5return nprint(fun(656))

输出结果

0.8

5.2016年,微信朋友圈中曾疯传“手机尾号暴露你的年龄”,其算法如下:看一下你手机号的最后一位;把这个数字×2;然后加上5;再×50;把得到的数加上1766;用这个数-你出生的那一年,现在得到一个新的数字,该数的最后两位就是你的实际年龄。(本规则仅适用于年龄在100岁以内的人)。
现在,请解决以下问题:
(1)编写一个函数,该函数有两个参数:一个参数为手机号最后一位;另一个参数为四位数的出生年份该函数最后返回按照上述规则计算出来的年龄。

def fun(m, n):return ((m * 2 + 5) * 50 + 1766 - n) % 100m = int(input('请输入手机号最后一位:'))
n = int(input('请输入四位出生年份:'))
print(fun(m, n))

输出样例

请输入手机号最后一位:5
请输入四位出生年份:2000
16

(2)在主程序中,测试该函数,该函数能正确反映出你的真实年龄吗?如果不能,如何修改计算规则?
不能正确反映,把得到的数加上1770就可以实现

def fun(m, n):return ((m * 2 + 5) * 50 + 1770 - n) % 100    m = int(input('请输入手机号最后一位:'))
n = int(input('请输入四位出生年份:'))
print(fun(m, n))

输出样例

请输入手机号最后一位:8
请输入四位出生年份:2000
20

6.编写一个程序,在主程序中求1900~2020年中所有的闰年,每行输出5个年份。闰年即能被4整除,但不能被100整除,或者能被400整除的年份。要求定义一个函数isLeap(),该函数用来判断某年是否为闰年,是闰年则函数返回True,否则返回Flase。

def isLeapYear(year):return year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)count = 0
for n in range(1900, 2021):if isLeapYear(n) is True:print(n, end='\t')count += 1if count % 5 == 0:print()

输出结果

1904 1908 1912 1916 1920
1924 1928 1932 1936 1940
1944 1948 1952 1956 1960
1964 1968 1972 1976 1980
1984 1988 1992 1996 2000
2004 2008 2012 2016 2020

7.编写一个函数,求一个正整数n的各位数字之和,并在主程序中测试该函数。

def fun(n):sum = 0for i in str(n):sum += int(i)return sumdef fun2(n):ls = [int(c) for c in str(n)]return sum(ls)def fun3(n):ls = list(map(int, str(n)))return sum(ls)count = 0
n = eval(input('正整数n:'))
print(f'{n}各位数之和为:{fun(n)}')
print(f'{n}各位数之和为:{fun2(n)}')
print(f'{n}各位数之和为:{fun3(n)}')

输出样例

正整数n:189
189各位数之和为:18
189各位数之和为:18
189各位数之和为:18

8.求出所有符合下列条件的三位正整数:分别乘以3、4、5、6、7后得到的整数的各位数字之和都相等。
输入示例:
x=180:x3=540,x4=720,x5=900,x6=1080,x7=1260
x=198:x
3=594,x4=792,x5=990,x6=1188,x7=1386

x=999:x3=2997,x4=3996,x5=4995,x6=5994,x*7=6993

def fun(n):ls = [int(c) for c in str(n)]return sum(ls)count = 0
for n in range(100, 1000):if fun(n) == fun(n * 3) == fun(n * 4) == fun(n * 5) == fun(n * 6) == fun(n * 7):count += 1print(f"x={n}: x*3={n * 3}, x*4={n * 4}, x*5={n * 5}, x*6={n * 6}, x*7={n * 7}")
print(f"共有{count}个符合条件的三位数")

输出结果

x=180: x3=540, x4=720, x5=900, x6=1080, x7=1260
x=198: x
3=594, x4=792, x5=990, x6=1188, x7=1386
x=297: x3=891, x4=1188, x5=1485, x6=1782, x7=2079
x=360: x
3=1080, x4=1440, x5=1800, x6=2160, x7=2520
x=396: x3=1188, x4=1584, x5=1980, x6=2376, x7=2772
x=450: x
3=1350, x4=1800, x5=2250, x6=2700, x7=3150
x=495: x3=1485, x4=1980, x5=2475, x6=2970, x7=3465
x=549: x
3=1647, x4=2196, x5=2745, x6=3294, x7=3843
x=594: x3=1782, x4=2376, x5=2970, x6=3564, x7=4158
x=639: x
3=1917, x4=2556, x5=3195, x6=3834, x7=4473
x=693: x3=2079, x4=2772, x5=3465, x6=4158, x7=4851
x=792: x
3=2376, x4=3168, x5=3960, x6=4752, x7=5544
x=819: x3=2457, x4=3276, x5=4095, x6=4914, x7=5733
x=891: x
3=2673, x4=3564, x5=4455, x6=5346, x7=6237
x=900: x3=2700, x4=3600, x5=4500, x6=5400, x7=6300
x=909: x
3=2727, x4=3636, x5=4545, x6=5454, x7=6363
x=918: x3=2754, x4=3672, x5=4590, x6=5508, x7=6426
x=936: x
3=2808, x4=3744, x5=4680, x6=5616, x7=6552
x=945: x3=2835, x4=3780, x5=4725, x6=5670, x7=6615
x=990: x
3=2970, x4=3960, x5=4950, x6=5940, x7=6930
x=999: x3=2997, x4=3996, x5=4995, x6=5994, x*7=6993
共有21个符合条件的三位数

9.在主程序中输入一个整数n,判断该数是否为完数。所谓完数,是一些特殊的自然数,它所有的真因子(即除了自身以外的约束)的和,恰好等于它本身。如6=1+2+3,所以6是完数。要求定义一个函数,用来判断某个整数是否未完数,是完数则函数返回1,否则返回0。最后在主程序中测试该函数。

def fun(n):s = 0for i in range(1, n):if n % i == 0:s = s + ireturn 1 if s == n else 0def fun2(n):ls = [i for i in range(1, n) if n % i == 0]return 1 if sum(ls) == n else 0n = int(input('请输输入一个整数:'))
print(f'{n}是完数') if fun(n) == 1 else print(f'{n}不是完数')
print(f'{n}是完数') if fun2(n) == 1 else print(f'{n}不是完数')

输出样例

请输输入一个整数:65
65不是完数
65不是完数

10题

def fun(m, n):ls = [i ** m for i in range(1, n + 1)]return sum(ls)print(fun(1, 100) + fun(2, 50) + fun(-1, 10))

输出结果

47977.92896825397

11.求s=a+aa+aaa+…+aaa…aaa,其中a是1~9之间的某个数字,n是一个正整数。例如:
当a=2,n=5时,s=2+22+222+2222+22222=24690.要求定义一个函数,该函数根据参数a和n的值返回表达式a+aa+aaa+…+aaa…aaa的值,并在主程序中测试该函数。

def fun(a, n):s = 0item = 0for i in range(n):item = item * 10 + as += itemreturn sdef fun2(a, n):s = 0for i in range(1, n + 1):s += int(str(a) * i)return sdef fun3(a, n):ls = [int(str(a) * i) for i in range(1, n + 1)]return sum(ls)a, n = eval(input("输入a和n[用逗号分隔]:"))
s = fun(a, n)
print(f"若a={a},n={n},则s=a+aa+aaa+...+aaa...aaa={s}")
s = fun2(a, n)
print(f"若a={a},n={n},则s=a+aa+aaa+...+aaa...aaa={s}")
s = fun3(a, n)
print(f"若a={a},n={n},则s=a+aa+aaa+...+aaa...aaa={s}")

输出样例

输入a和n[用逗号分隔]:3,6
若a=3,n=6,则s=a+aa+aaa+…+aaa…aaa=370368
若a=3,n=6,则s=a+aa+aaa+…+aaa…aaa=370368
若a=3,n=6,则s=a+aa+aaa+…+aaa…aaa=370368

12.编写一个函数,简单的模拟微信发红包算法。函数有两个参数:一个参数是红包的总金额,默认值为100;另一个参数表示红包数量,默认值为15.所有随机产生的红包金额(保留两位小数)存放在一个列表(同时作为函数的返回值)中,单个红包金额最少为0.01元,所有红包金额之和应等于红包总金额。最后在主程序中测试该函数,要求对函数的默认值也进行测试。

import randomdef redPacket1(money=100, number=15):ls = []for n in range(number - 1):lucky_money = random.uniform(0.01, money - (number - 1 - n) * 0.01)lucky_money = round(lucky_money, 2)ls.append(lucky_money)money = money - lucky_moneyls.append(round(money, 2))return lsdef redPacket2(money=100, number=15):ls = []for n in range(number - 1):lucky_money = random.uniform(0.01, money / (number - n) * 2)lucky_money = round(lucky_money, 2)ls.append(lucky_money)money = money - lucky_moneyls.append(round(money, 2))return lsdef redPacket3(money=100, number=15):money = money * 100ls = []for n in range(number - 1):lucky_money = random.randint(1, int(money / (number - n) * 2))ls.append(lucky_money / 100)money = money - lucky_moneyls.append(money / 100)return lsa = redPacket1()
print(a)
print(sum(a))a = redPacket2()
print(a)
print(sum(a))a = redPacket3()
print(a)
print(sum(a))a = redPacket3(1000)
print(a)
print(sum(a))a = redPacket3(1000, 20)
print(a)
print(sum(a))a = redPacket3(10, 6)
print(a)
print(sum(a))

输出样例

[26.01, 8.72, 40.33, 23.49, 0.26, 0.2, 0.52, 0.11, 0.26, 0.03, 0.03, 0.01, 0.01, 0.01, 0.01]
100.00000000000003
[1.75, 1.26, 8.46, 11.0, 4.6, 14.26, 7.41, 12.27, 7.57, 5.77, 0.52, 3.49, 13.05, 6.94, 1.65]
99.99999999999997
[3.5, 5.78, 4.02, 4.34, 3.15, 8.3, 8.7, 13.88, 11.19, 0.96, 3.83, 6.28, 12.99, 11.91, 1.17]
100.0
[132.31, 37.31, 36.04, 46.51, 76.15, 2.73, 143.08, 60.52, 118.87, 19.65, 99.55, 33.84, 26.18, 27.67, 139.59]
999.9999999999999
[61.17, 40.94, 13.23, 25.39, 27.35, 42.43, 63.23, 80.97, 97.25, 58.35, 84.18, 11.12, 9.76, 99.41, 69.04, 34.13, 18.45, 72.78, 2.36, 88.46]
1000.0
[3.25, 1.3, 0.04, 2.68, 1.17, 1.56]
10.0

13.编写一个函数isdiff(n),用来判断参数n的各位数字是否互不相同,若互不相同,则返回1,否则返回0,并在主程序中测试该函数。

def isdiff(n):s = str(n)for i in s:if s.count(i) > 1:return 0else:return 1def isdiff2(n):a = str(n)b = set(a)return 1 if len(a) == len(b) else 0n = int(input('请输入一个正整数:'))
if isdiff(n) == 1:print(f'{n}的各位数字互不相同')
else:print(f'{n}中有重复数字')if isdiff2(n) == 1:print(f'{n}的各位数字互不相同')
else:print(f'{n}中有重复数字')

输出样例

请输入一个正整数:69
69的各位数字互不相同
69的各位数字互不相同

14.编写一个函数,接受一个列表参数,函数返回该列表中所有正数之和。最后在主程序中测试该函数。

def fun(ls):_ls = [i for i in ls if i > 0]return sum(_ls)def fun2(ls):_ls = filter(lambda n: n > 0, ls)return sum(_ls)ls = eval(input('请按照列表格式输入列表元素:'))
print(f'该列表中所有正数之和为:{fun(ls)}')
print(f'该列表中所有正数之和为:{fun2(ls)}')

输出样例

请按照列表格式输入列表元素:16,15,18
该列表中所有正数之和为:49
该列表中所有正数之和为:49

python 实验八 函数 (上)相关推荐

  1. python语言程序设计实验答案实验八函数_C++程序设计 实验8 实验报告 标准答案...

    实验编号 及实验名称 实验 8 静态成员练习:学生成绩统计 系 别 计科系 姓 名 学 号 班 级 实验地点 实验日期 实验时数 2 指导教师 同组其他成员 成 绩 一. 实验目的及要求 1. 通过在 ...

  2. 智慧树c语言实验八函数,C君带你玩编程

    第一章 认识C语言 认识C语言 C语言的历史与特点 C语言的历史与特点 算法及其表示 算法及其表示 C程序的操作过程 C程序的操作过程 C程序的基本结构 C程序的基本结构 标识符.关键字和保留字 标识 ...

  3. 实验八——函数定义及调用总结

    1.本次课学习到的知识点: (1)学习了数字金字塔.pyramid ()函数功能,函数定义时,形参n决定数字金字塔的层数: (2)不返回结果的函数定义: (3)复数运算: c1=x1+(y1) i,c ...

  4. Python实验、函数和代码复用

    实验代码 1.编写函数.计算传入的字符串中数字.字母.空格.其他字符的个数. def count(s):num = 0alpha = 0space = 0other = 0for i in s:if ...

  5. python实验八分支语句_python语句(分支,循环)

    这次简单说下,分支,循环等语句 一.条件语句(分支) 1.if语句 基本写法:(不可以忽略缩进) if 判断条件(非0,非空,true): 执行语句 else (if):                ...

  6. c语言程序设计实验指导交大答案,C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc...

    C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc 实验一 Visual C集成环境实验内容(一)程序改错1.(1)无法运行(2)将第二个C程序重 ...

  7. Python|实验项目八例

    实验一:编写一个Python程序,模拟一个自动柜员机(ATM)验证用户输入密码的操作.ATM提示用户输入密码,如果用户输入正确密码,ATM输出密码正确信息,然后终止程序. #exp1_1 def ma ...

  8. python函数实验总结_Python程序设计实验报告:实验六 函数

    安徽工程大学 Python程序设计 实验报告六 班级 物流192 姓名陶俊学号3190505235 成绩 日期 2020.5.4 指导老师修宇 实验 6 函数 [实验目的] 掌握函数的定义与使用方法: ...

  9. Python第八课(函数1)

    Python第八课(函数1)    >>>转到思维导图>>>转到中二青年 函数的返回值 函数内要想返回给调用者值 必须用关键字return 不写return:函数默 ...

  10. python上机实验报告读取文件_Python程序设计实验报告:实验八 文件

    安徽工程大学 Python程序设计 实验报告 班级 物流192姓名陶俊 学号3190505235 成绩 日期 2020.6.3 指导老师修宇 实验八 文件 [实验目的] 掌握读写文本文件或 CSV 文 ...

最新文章

  1. Linux Test Project 测试套件说明
  2. 手动启动“远程过程调用”服务时,出现错误信息1058
  3. R语言NaN函数实战(计数、替换、删除)
  4. R缺失值识别、过滤、填充(中位数、KNN、随机森林)
  5. Android stadio bug
  6. 【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 线性规划求解示例 )
  7. 唤起微信/QQ返回不了当前页面解决方法
  8. vim常用命令总结 (转)
  9. stm8s003程序跑飞_微信小程序只玩跳一跳?OUT啦!带你玩更好玩的微信小游戏!...
  10. python代码覆盖率怎么统计的_Python代码覆盖率统计工具coverage.py用法详解
  11. python实现卷积_【python实现卷积神经网络】池化层实现
  12. 数据结构上机实践第四周项目6- 循环双链表应用
  13. 01-区块链入门之 区块链介绍一-大叔思维
  14. 数据批量删除_从页面js到后台数据库
  15. express koa koa2 优缺点分析
  16. 包含漏洞-读写文件以及执行命令
  17. SQL中的comment语法
  18. Android LocalServices解耦妙用: system_server进程中各个服务之间的连通器LocalServices
  19. 计算机用户全部删除,电脑用户怎么删除:批量删除计算机用户方法
  20. Python入门(十八):MyQR 二维码制作

热门文章

  1. 从零开始设计RISC-V处理器——五级流水线之控制冒险
  2. Ngxin虚拟主机的三种配置方法
  3. 如何关闭/屏蔽百度搜索结果的置顶广告?(无耻的百度关了又自己开启)
  4. Final IK详解
  5. 安卓查看内存读写测试软件_办公电脑太慢?试试加条内存就好!内存晒单和内存问题科普...
  6. JDK安全模块JCE核心Cipher使用详解
  7. 关于人生的15句话——特别现实的讽刺性句子
  8. 一步一步教你写股票走势图——分时图五(自定义标记)
  9. @2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017) K:Kayaking Trip(二分+贪心)
  10. 彩虹云仿小柯秒赞主题模板