python实战之经典题

1.用户登录注册案例

users = {}  # 存储用户信息的字典

def register():
    username = input("请输入用户名: ")
    if username in users:
        print("该用户名已被注册,请重新输入!")
        return
    password = input("请输入密码: ")
    users[username] = password
    print("注册成功!")

def login():
    username = input("请输入用户名: ")
    password = input("请输入密码: ")
    if username not in users or users[username] != password:
        print("用户名或密码错误!")
    else:
        print("登录成功!")

# 测试代码
register()
login()

测试结果:

2.求50~150之间的质数是那些?

for num in range(50,151):
 
    flag=True
    for i in range(2,num):
         if num%2==0 or num%3==0 or num%5==0 or num%7==0 or num%11==0 :
            flag=False
            break
    if flag:
        print("",num)

测试结果:

3.打印输出标准水仙花数,输出这些水仙花数

# 方法一
for x in range(100,1000):
    a = x // 100    # 百位
    b = x % 100 // 10    # 十位
    c = x % 10    # 个位
    if a ** 3 + b ** 3 + c ** 3 == x:
        print(x)
 
 
# 方法二
for x in range(1,10):    # 百位:不能为0,所以在1-10(不包函10)循环
    for y in range(10):    # 十位
        for z in range(10):    # 个位
            # 百位*100+十位*10+个位=最终的三位数
            if x ** 3 + y ** 3 + z ** 3 == x * 100 + y * 10 +z:
                print(x * 100 + y * 10 +z)

测试结果:

4.验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

def bigger_than_9(num):
    if num < 9 :
        return
    count = 0
    num_start = num     #存储输入初值
    while num > 0 :
        count += num % 10
        num //= 10          #通过取余的方式循环取出每一位数
    if (num_start - count)%9 ==0:
        return True
    return False

num= int(input ('输入一个数'))
print(bigger_than_9(num))

测试:

5.一个五位数,若在它的后面写上一个7,得到一个六位数A, 若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此 五位数.

for i in range (10000,100000) :
        a = i*10+7
        b = 700000+i
        if a*5 == b: 
            print("这个五位数是:",i)

测试:

6.有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币 [10, 8, 5, 3, 27, 99]

coin=[10, 8, 5, 3, 27, 99]
x=0
for i in coin:
	if i%2==0:
		x+=i//2
	else:
			 x+=i//2+1
print("最少%s"%(x)+"次可以拿完硬币")

测试:

7.如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

def is_prime(n):
    if n<=1:
        return False
    for i in range(2,int(n**0.5+1)):
        if n%i==0:
            return False
    return True


print("这些孪生数是:")
for i in range(2,100):
    if is_prime(i)and is_prime(i+2):
        print(i,i+2)

测试:

8.给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

l=[10,20,25,45,50,55,13,23]
max_num=25
for i in l :
	if i>max_num:
	    max_num = i
print("最大值为:%s"%max_num)

# 最小值
min_num = 55
for i in l:
	if i < min_num:
		min_num = i
print("最小值是:%s"%min_num)

# 平均值
avg_num=0
for i in l :
	avg_num+=i
print("平均值是:%s"%(avg_num/len(l)))

# 和
sun_num=0
for i in l :
	sun_num+=i
print("平均值是:%s"%(sun_num))

测试:

9.将list中的重复数据去重,至少使用两种方案

方法一用set消除重复元素
l =[4,45,89,8,8,8,0,0,0,8]
for  i in l :
	l2=list(set(l))
print("去重后的元素为:%s"%ls2)

# 方法二:
l=[5,7,5,6,54,7,7,8]
l2=[]
for i in l:
	  if  i  not in  l2:
		  l2.append(i)
print("去重后的元素为:%s"%l2)

测试:

10.如何将0-10随机存入列表中

import random
ls=[]
for i in range(1,11):
	num=random.randint(1, 11)
	ls.append(num)
print("添加后的元素为:%s"%ls)

测试:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值