python作业第三周

第一天 

  1. 求一个十进制的数值的二进制的0、1的个数

  2. 实现一个用户管理系统(要求使用容器保存数据) [{name: xxx, pass: xxx, ……},{},{}]

  3. 求1~100之间不能被3整除的数之和

  4. 给定一个正整数N,找出1到N(含)之间所有质数的总和

  5. 计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)

  6. 给定一个10个元素的列表,请完成排序(注意,不要使用系统api)

  7. 求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

  8. 合并两个有序数组,合并后还是有序列表

  9. 给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

第二天 

  1. 给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n), 可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数

  2. 找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)

  3. 写一个方法,计算列表所有偶数下标元素的和(注意返回值)

  4. 【选做】某个人进入如下一个棋盘中,要求从左上角开始走, 最后从右下角出来(要求只能前进,不能后退), 问题:共有多少种走法?

    0 0 0 0 0 0 0 0
    
    0 0 0 0 0 0 0 0
    
    0 0 0 0 0 0 0 0
    
    0 0 0 0 0 0 0 0
    
    0 0 0 0 0 0 0 0

汉诺塔

第一天 

 第一题:

#a = int(input("整数"))
a=120
count0=0
count1=0
while True:
    b= a%2
    a//=2
    if b==0:
        count0+=1
    if b==1:
        count1+=1
    if a//2==0:
        count1+=1
        break
print(f"0有{count0}个,1有{count1}个")

第二题

def add(**kwargs):
   return kwargs
l = list()
while True:
    print("——————————————————————————————————————————————————")
    print("               欢迎进入学生管理系统\n"
          "               1 添加学生\n"
          "               2 打印学生\n"
          "               3 退出")
    print("——————————————————————————————————————————————————")
    choice = input("输入你的选项")
    if choice == "1":
        a = input("name")
        b = input("age")
        d = dict(add(name=a, age=b))

        l.append(d)
        print("添加完成")
    if choice == "2":
        print(l)
    if choice == "3":
        break

第三题

i =1
sum =0
while i<=100:
    if i%3!=0:
        sum += i
    i+=1
print(sum)

第四题

N = int(input("数"))
sum = 0
for i in range(1,N+1):
    for j in range(2, i):
        if i%j==0:
            break
    j=2
    if i%j!=0:
        print("%d是质数" % (i))
        sum+=i
print(sum)

 

第五题

def My_pi(n):
    pi=0
    a=1
    for i in range(n):
        pi += a/(2*i+1)
        a*=-1
    return 4*pi
b = int(input("第几项"))
print(My_pi(b))

第六题

l =[9,8,7,6,5,4,3,2,1]
def My_sort(x):
    i=0
    while i<len(x):
        j=0
        while j<len(x)-i-1:
            if x[j]>x[j+1]:
                x[j], x[j + 1] = x[j + 1], x[j]
            j+=1
        i+=1
    print(x)
My_sort(l)

 第七题

def sum(x,y):
    i=0
    s = 0
    while i<y:
        s+=x * 10**i
        i+=1
    return s
a =int(input("1-9之间整数"))
b = int(input("几位数"))
print(sum(a,b))

第八题

l =[3,9,15,34,67]
l2 = [4,7,90,123]
def My_sort(x):
    i=0
    while i<len(x):
        j=0
        while j<len(x)-i-1:
            if x[j]>x[j+1]:
                x[j], x[j + 1] = x[j + 1], x[j]
            j+=1
        i+=1

i =0
while i<len(l):
    l2.append(l[i])
    i+=1
My_sort(l2)
print(l2)

 

第九题

l = [1,2,3,4,5,6,7,8,9]
l2 = list()
for i in range(0,len(l)):
    if l[i]%2==0:
        l2.append(l[i])
for i in range(0,len(l)):
    if l[i]%2==1:
        l2.append(l[i])
print(l2)

第二天 

第一题

def find(nums):
    nums.sort()
    for i in range(len(nums) - 1):
        if nums[i] == nums[i + 1]:
            return nums[i]



nums = [1, 3, 4, 2,3]
print(find(nums))

第二题

def pd(x):
    if x%5==0 and x%6==0:
        return 0
    else:
        return 1
for i in range(1,10001) :
    if pd(i)==1:
        print(i)

第三题

l=[1,2,3,4,5,6,7,8]

def js(x):
    sum=0
    for i in range(len(x)):
        if i%2==0:
            sum += x[i]
    return sum
print(f"偶数下标和为{js(l)}")

第四题

#    组合数的计算公式是:     C(n, k) = n! / (k!(n-k)!)
def jc(x):
    if x==1:
        return 1
    return x*jc(x-1)

#  图中是5行8列  所以是C(11, 4)

result = jc(11)/(jc(7)*jc((11-7)))
print(result)

汉诺塔问题

def my_print(start,end):
    print(f"{start}->{end}")

def move(n,start,tmp,end): 
  # a,b,c
    if n==1:
        my_print(start,end)  
#  a->c
    else:
        move(n-1,start,end,tmp)    
# 把n-1个盘挪到中转柱子上  传参a ,c,b   move中 a->b
        my_print(start,end)    

# 把最后一个盘挪到目标柱子     上面是个递归是独立的,不影响这个函数的参数   a->c

        move(n-1,tmp,start,end)  

 # 再把n-1个盘从中转柱 挪到 目标柱  传的参 是 b, a, c,  打印出来就是 b->c

n= int(input("几层盘"))

move(n,'a','b','c')   
#  a是初始柱  b是中转柱  c是目标柱

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值