python基础练习题(按条件对指定序列求和,打印99乘法表、求斐波那契数列、百马百担、求水仙花数、求n以内的所有质数(素数)和)、集合的讲解、一些公关方法

时间:2021-1-8 作者:admin

1.求100(含100)以内所有偶数的和

range(start,end,step)这个序列生成器,和那个切片的语法一样,含头不含尾,step是步长,这里就不需要在对j进行判断了,对于这些简单求奇数和、求偶数和,就n的倍数和等等就可以这样做

s = 0
for j in range(0,101,2):
    s = s + j
print(s) # 2550

2.打印99乘法表

用于理解循环的使用

# a=0
# while a<9:
#     a+=1
#     b=0
#     while b<a:
#         b+=1
#         print(b,'*',a,'=',a*b,sep='',end='\t') #sep是分隔符默认是空格,\t是制表符
#     print()
for i in range(1,10):
    for j in range(1,i+1):
        print(f'{j}*{i}={i*j}',end='\t')
    print()
"""
1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
"""

3.求第n位斐波那契数

这是求第n位斐波那契数,大家可以尝试多种方法做,我这就不做多的演示了,要是求n(包含n)位前所有斐波那契数了,创建一个列表保存一下就好,希望大家可以去做一下,加深对列表方法的使用

# 斐波那契数列:1,1,2,3,5,8,13,21,34,55.....
# 从第三位开始:后一个数等于前面两数相加
n = int(input('请输入你要求第几位斐波那契数:'))
a = 0
b = 1
for i in range(n):
    # c = a
    # a = b
    # b = c + b
    # 上里三式可以简写为:
    a,b = b,a+b
print(a)

4.百马百担

一匹大马能背3担货,一匹中马能背2担货,两匹小马能背1担货,如果用一百匹马背一百担货,有哪些不同的背法

for i in range(34): # i代表大马的匹数
    for j in range(51): # j代表中马的匹数
        if i*3+j*2+(100-i-j)/2 == 100:
            print(f'大马={i},中马={j},小马={100-i-j}')
# 大马=2,中马=30,小马=68
# 大马=5,中马=25,小马=70
# 大马=8,中马=20,小马=72
# 大马=11,中马=15,小马=74
# 大马=14,中马=10,小马=76
# 大马=17,中马=5,小马=78
# 大马=20,中马=0,小马=80

5.求水仙花数

我这定义了一个函数去求n位数的水仙花数,不过水仙花数就是100-1000内个位十位百位3次方的和等于本身的数,我那只是类推一下,当然也可以不定义函数,直接使用input输入一个n或者直接给定n的值

def get_Narcissistic(n):
    for i in range(pow(10,n-1),pow(10,n)):
        s = 0
        for j in range(n):
            s = s+pow(i//10**j%10,n)
        if i==s:
            print(i)
get_Narcissistic(3)
# 153
# 370
# 371
# 407

6.求n以内的所有质数(素数)和

质数:只能被1和自身整除的数

n = int(input('请输入一个大于或等于2的正整数:'))
# for i in range(2,n+1):
#     flag = True # 每次循环开始都会重置为True
#     for j in range(2,int(i**0.5)+1):# 只用循环到i的平方根就好减少循环次数
#         if i%j == 0:
#             flag = False
#             break # 只要有一个整除就跳出循环
#     if flag: # 只有上面循环完,flag还等于True才会打印i
#         print(i)
# 上面程序也可以写成
# 这里就涉及到for...else语句的使用:
# 当for..in循环自然结束时,后面有else就会运行else里的内容,没有就执行下面的内容
# 当循环因为某种原因(如break)提前退出循环,就不会执行else里的内容
for i in range(2,n+1):
    for j in range(2,int(i**0.5)+1):# 只用循环到i的平方根就好减少循环次数,提高效率
        if i%j == 0:
            break # 只要有一个整除就跳出循环
    else: # 只有上面循环完,flag还等于True才会打印i
        print(i,end='\t')# 显示在一行
# 2  3   5	7	11	13	17	19	23	29	31	37	41	43	47	53	59	61	67	71	73	79	83	89	97

—————————————————

集合的使用

-集合也是用{}包裹起来的,集合是一个不重复的无序的,所有集合一般用来去重操作的
注意:空集合使用set()表示,{}表示空字典

persons = {'zhangsan', 'lisi', 'jack', 'lisi', 'jack', 'wangwu', 'maliu'}
print(persons) # {'zhangsan', 'wangwu', 'jack', 'maliu', 'lisi'}

persons.add('李白')  # 添加一个元素,但位置不确定,所有你们运行的答案和我的一样但是顺序不一样
print(persons)# {'zhangsan', 'wangwu', 'jack', 'maliu', 'lisi', '李白'}

persons.pop()# 随机删除一个元素,你们运行的答案应该和我的应该不一样
print(persons)  # {'wangwu', 'zhangsan', '李白', 'jack', 'maliu'}

persons.remove('李白')# 删除一个指定的元素,没有的话会报错
print(persons)  # {'wangwu', 'zhangsan', 'jack', 'maliu'}

# union 将多个集合合并生成一个新的集合
# A.update B 将B拼接到A,B要是一个可迭代对象
# 集合是无序的,所以就不一定是添加在最后
persons.update(('刘能','赵四'))
print(persons)# {'刘能', 'wangwu', 'zhangsan', '赵四', 'jack', 'maliu'}

# persons.clear()#用来清空集合的

python里的集合也是有交集并集差集一说的,当然交集并集差集也是可以用字典的方法来表示的,这里我就不演示了,我感觉直接用符号简单一点,要了解的话也可以查看一下帮助文档

sing = {'王昭君', '貂蝉', '小乔', '大桥', '火舞', '李白', '韩信'}
dance = {'李元芳', '王昭君', '李白', '韩信', '老虎', '鲁班', '后裔'}
print(sing - dance)#A和B的差集 {'大桥', '火舞', '小乔', '貂蝉'}
print(sing & dance)#A和B的交集 {'王昭君', '李白', '韩信'}
print(sing | dance)#A和B的并集 {'李元芳', '王昭君', '后裔', '鲁班', '老虎', '火舞', '貂蝉', '李白', '大桥', '小乔', '韩信'}
print(sing ^ dance)#A和B的差集的并集 #{'李元芳', '鲁班', '小乔', '后裔', '火舞', '貂蝉', '老虎', '大桥'}

—————————————————

一些公关方法

# +:可以用来拼接,字符串,列表,元组
print('hello' + 'world')# 'helloworld'
print([1, 2, 3] + [4, 5, 6])# [1, 2, 3, 4, 5, 6]
print((1, 2, 3) + (4, 5, 6))# (1, 2, 3, 4, 5, 6)

# -:只能用于集合,求差集
print({1,2,3}-{3})# {1, 2}

# *:可以用于字符串元组列表,不能用于字典和集合
print('hello'*3)# 'hellohellohello'
print([1,2,3]*3)# [1, 2, 3, 1, 2, 3, 1, 2, 3]
print((1,2,3)*3)# (1, 2, 3, 1, 2, 3, 1, 2, 3)

# in:成员运算符
print('a'in 'abc')# True
print(1 in[1,2,3])# True
print(1 in (1,2,3))#True
# in用于字典是用来判断key是否存在的
print('zhangsan'in{'name':'zhangsan','age':18})# False
print('name'in{'name':'zhangsan','age':18})# True



希望对您有所帮助,觉得有用可以点个赞再走哦

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。