Python实验报告8

文章展示了三个Python编程实例,包括一个猜数游戏,其中用户需猜出0-9间的一个随机数;一个随机密码生成器,能创建10组不同且包含特定字符集的10位密码;以及寻找2-100000以内的所有相亲数,即两数互为对方因子之和的配对。
摘要由CSDN通过智能技术生成

1、编程实现:猜数游戏。在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数。如果大于预设的数,显示“太大了”;若小于预设的数,显示“太小了”,如此循环直至猜中该数,显示“猜测了N次,你猜中了”,其中N是用户输入数字的次数。

from random import*
a=randint(0,9)
c=a
b=10
s=0
while b!=a:
    b=int(input("请输入猜测的0-9之间的整数:"))
    if b>a:
        print("太大了")
    elif b<a:
        print("太小了")
    s=s+1
print("要猜测的数字是{}".format(c))
print("猜了{}次,你猜中了".format(s))

2、编程实现:生成随机密码。具体要求如下:

(1)使用random库,采用字符‘A’作为随机数种子。

(2)密码由26个英文大小写字母、10个数字字符和!@#$%^&*等等8个特殊字符组成。

(3)每组密码长度固定为10个字符。

(4)程序运行产生10组密码,每组密码都不能与其他组相同。

(5)按每行一组输出产生的10组密码。

from random import*
i,ls=0,[]
s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*"
seed( ord("A"))
while i<10:
    m=''
    for j in range(10):
        m=m+s[int(random()*len(s))]
    if not(m in ls):
        print("第{}组密码为:{}".format(i+1,m))
        ls.insert(i,m)
        i=i+1

本题解题方法有很多种,这里就只记录一种。

3.编程实现:输出2-100000 以内所有的相亲数。所谓相亲数是指一个数x所有因子之和等于y,而y的所有因子之和等于x,此时x和y称为一对相亲数。

2-100000以内所有的相亲数︰

第1对相亲数为:220和284

220的因子之和为:1+2+4+5+10+11+20+22+44+55+110=284284的因子之和为:1+2+4+71+142=220

print("2-10000以内的所有相亲数:")
n=0  #第几对相亲数
for i in range(2,100001):#从2开始找
    n1=0
    a=''
    n2=0
    b=''
    for j in range(1,i):#j为数字的因子
        if i%j==0:
            n1=n1+j#相亲数中的第二个数字的因子和
            a=a+str(j)+'+'#因子的相加公式如1+2+4+5+
    for k in range(1,n1):
        if n1%k==0:
            n2=n2+k#相亲数中的第一个数字的因子和
            b=b+str(k)+'+'#因子的相加公式如1+2+4+
    if i!=n1 and i==n2:#如果不写这句话就会出现220,284是第一对相亲数。284,220是第二队相亲数这种错误情况
        if n1>n2:
            n=n+1
            print("第{}对相亲数为:{}和{}".format(n,n2,n1))
            print("{}的因子之和为:{}={}".format(n2,a[0:-1],n1))
            print("{}的因子之和为:{}={}".format(n1,b[0:-1],n2))

下面写的是同学的代码:(不是自己写的,果然有点理解不了)

p=0
print("2-1000000以内所以的相亲数:")
for i in range(2,100001):
    s=0
    m=''
    for j in range(1,i):
        if i%j==0:
            s=s+j
            m=m+str(j)+"+"
    for k in range(i+1,100001):
        if k==s:
            n=''
            t=0
            for l in range(1,k):
                if k%l==0:
                    t=t+l
                    n=n+str(l)+"+"
                    if t==i:
                        p=p+1
                        print("第{}对相亲数为:{}、{}".format(p,i,k))
                        print(i,"的因子之和为:",m[:-1])
                        print(k,"的因子之和为:",n[:-1])
                        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值