python第四次作业

用户登录注册案例
1.def register():
username = input("请输入用户名:")
password = input("请输入密码:")
with open("users.txt", "a") as f:
f.write(f"{username} {password}
")
print("注册成功!")

def login():
username = input("请输入用户名:")
password = input("请输入密码:")
with open("users.txt", "r") as f:
for line in f:
if line.strip() == f"{username} {password}":
print("登录成功!")
return
print("用户名或密码错误!")

while True:
operation = input("请选择操作(1. 注册 2. 登录 3. 退出):")
if operation == "1":
register()
elif operation == "2":
login()
elif operation == "3":
break
else:
print("输入错误,请重新输入!")

 

2. 求50~150之间的质数是那些?
  
primes = []  
  
for num in range(50, 151):  
    is_prime = True  
        
    for i in range(2, int(num ** 0.5) + 1):  
        if num % i == 0:    
            is_prime = False  
            break  
    if is_prime:  
        primes.append(num)  

print(primes)

 

3. 打印输出标准水仙花数,输出这些水仙花数
for num in range(100, 1000):  
    
    units = num % 10  
    tens = (num // 10) % 10  
    hundreds = num // 100  
      
    
    sum_of_cubes = units ** 3 + tens ** 3 + hundreds ** 3  
      
    if sum_of_cubes == num:  
        print(num)

 

4. 验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.
for num in range(10, 1000): 
    sum_of_digits = 0  
    temp = num  
    while temp > 0:  
        sum_of_digits += temp % 10  
        temp //= 10  
          
    difference = num - sum_of_digits   
    if difference % 9 == 0:  
        print(f"{num} 减去它的各位数字之和所得的差 {difference} 能被9整除。")  
    else:  
        print(f"{num} 减去它的各位数字之和所得的差 {difference} 不能被9整除。")

 

5. 一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数
for i in range(10000,100000):
    num = str(i)
    a = int(num + '7')
    b = int('7' + num)
    if b == 5*a:
        print(i)
        break
6. 有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
            [10, 8, 5, 3, 27, 99]
coins = [10, 8, 5, 3, 27, 99]
count = 0

while sum(coins) > 0:
    max_coin = max(coins)
    if max_coin <= 2:
        coins.remove(max_coin)
    else: 
        coins[0] -= 2
        count += 1

print(count)

 

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

primes = []

for num in range(2, 101):
    isPrime = True
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            isPrime = False
            break
    if isPrime:
        primes.append(num)

twin_primes = []
for i in range(len(primes)-1):
    if primes[i+1] - primes[i] == 2:
        twin_primes.append([primes[i], primes[i+1]])

print(twin_primes)
.
8. 给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和
nums = [5,3,6,2,10]

max_num = nums[0]
for num in nums:
    if num > max_num:
        max_num = num
print("Max:", max_num)

min_num = nums[0]
for num in nums:  
    if num < min_num:
        min_num = num
print("Min:", min_num)

sum_num = 0
for num in nums:
    sum_num += num
length = len(nums)  
average = sum_num / length
print("Average:", average)

sum_num = 0
for num in nums:
    sum_num += num
print("Sum:", sum_num)

 

9. 将list中的重复数据去重,至少使用两种方案. 如何将0-10随机存入列表中
nums = [5,3,6,2,5,10,3]
unique_nums = list(set(nums))
print(unique_nums)

nums = [5,3,6,2,5,10,3]
unique_nums = []
for num in nums:
    if num not in unique_nums:
        unique_nums.append(num)
print(unique_nums)  

import random
nums = random.sample(range(1,11), 10)
print(nums)

 

 

 
posted @ 2024-03-21 21:15  青鸢..i  阅读(38)  评论(0)    收藏  举报