第三章 函数 课后练习题

目录

1. 打印2000-3000之间被7整除但不被5整除的数,以,(逗号)分隔

2. 输出9*9口诀表

3. 计算1 - 1/2 + 1/3 - 1/4 + … + 1/99 - 1/100 + …直到最后一项的绝对值小于10的-5次幂为止

4. 编程将类似“China”这样的明文译成密文,密码规律是:用字母表中原来的字母后面第4个字母代替原来的字母,不能改变其大小写,如果超出了字母表最后一个字母则回退到字母表中第一个字

5. 输出以下如下规律的矩阵

6. 对一个列表求和,如列表是[4, 3, 6],求和结果是 [4, 7, 13],每一项的值都等与该项的值加上前一项的值

7. 一个字符串 list,每个元素是 1 个 ip,输出出现次数最多的 ip

8. 打印100以内的素数

9. 实现一个简易版的计算器,功能要求:加、减、乘、除,支持多数同时进行计算

10.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和

11.画等(腰)边三角形(实心、空心)

12.画倒等边三角形

13.画直角三角形(实心、空心)

14.用*号输出字母C的图案

15.打印N,口,H图案

16.打印出如图所示的杨辉三角形,要求可以自定义行数

17.打印如图所示图案,要求支持指定行数,但行数必须是奇数行

18.要求实现一函数,该函数用于求两个集合的差集,结果集合中包含所有属于第一个集合但不属于第二个集合的元素

19.找出一段句子中最长的单词及其索引位置,以list返回

20.返回序列中的最大数


1. 打印2000-3000之间被7整除但不被5整除的数,以,(逗号)分隔

result = []

for i in range(2000,3000):
	if i%7==0 and i%5!=0:
		result.append(str(i))

print(",".join(result))


# 方法2
for i in range(2000,3000):
	if i%7==0 and i%5!=0:
		print(i,end=",")

2. 输出9*9口诀表

for i in range(1,10):
	for j in range(1,i+1):
		print("%d * %d = %d" %(j,i,i*j),end=" ")
	print()

3. 计算1 - 1/2 + 1/3 - 1/4 + … + 1/99 - 1/100 + …直到最后一项的绝对值小于10的-5次幂为止

result = 0
for i in range(1,10**5+1):
	if i % 2 == 0:
		result -= 1/i
	else:
		result += 1/i

print(result)


# 方法2
result = 0.0
n = 1
while True:
    if abs(1/n) < pow(10,-5):
        break
    else:
        if n%2 == 1:
            result += 1/n
            n += 1
        else:
            result -= 1/n
            n += 1
print(result)

4. 编程将类似“China”这样的明文译成密文,密码规律是:用字母表中原来的字母后面第4个字母代替原来的字母,不能改变其大小写,如果超出了字母表最后一个字母则回退到字母表中第一个字

def encrypt(s):
	result=""
	if not isinstance(s,str):
		return
	for i in s:
		if (i >= 'a' and i <= 'v') or (i >= 'A' and i <= 'V'):
			result += chr(ord(i)+4)
		else:
			result += chr(ord(i)+4-26)
	return result

print(encrypt('China'))
print(encrypt('wxYz'))

"""
F:\课后练习题>py -3 p3-4.py
Glmre
abCd
"""

5. 输出以下如下规律的矩阵

1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
for i in range(1,5):
	for j in range(1,6):
		print(j*i,end=" ")
	print()

6. 对一个列表求和,如列表是[4, 3, 6],求和结果是 [4, 7, 13],每一项的值都等与该项的值加上前一项的值

l =[4, 3, 6]
result = []
for i in range(len(l)):
    result.append(sum(l[0:i+1]))# result.append(reduce(lambda x,y:x+y,l[0:i+1]))
print(result)

# 方法2
def add_list(l):
	if not isinstance(l,(list,tuple)):
		print("请传入一个列表")
		sys.exit()
	result = []
	num = 0
	for i in l:
		num += i
		result.append(num)
	return result
	
print(add_list([4,3,6]))

7. 一个字符串 list,每个元素是 1 个 ip,输出出现次数最多的 ip

ip_list=["192.168.1.101","192.168.1.102","192.168.1.103","192.168.1.102","192.168.1.101"]

result={}
for i in ip_list:
	result[i]= ip_list.count(i)

for k,v in result.items():
	if v == max(result.values()):
		print("出现次数最多的IP:%s,出现%d次"%(k,v))
		
# 方法2
for i in ip_list:
	if i not in result.keys():
		result[i] = 1
	else:
		result[i] += 1

max_value=0
for v in result.values():
	if v > max_value:
		max_value = v
for k,v in result.items():
	if v==max_value:
		print("出现次数最多的IP:%s,出现%d次"%(k,v))

8. 打印100以内的素数

from math import sqrt

""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值