Python练习(续)
练习1:用户登录注册案例
import sysidname = {'test':'123456'}print(""" 英雄联盟商城登录界面~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~
""")
a = int(input("(温馨提示)请输入您的选项:"))if a == 1:b = input("请输入您的账号:")c = input("请输入您的密码:")if b in idname.keys()and c == idname[b]: print(idname[b])print("登录成功!")else:print("登录失败!")
elif a == 2:a = input("请输入您的账号:")if a in idname.keys():print("该账号已被注册!")else:b = input("请输入您的密码:")idname[a] = bprint("注册成功!")
elif a == 3:print("退出系统!")sys.exit()
else:print("请输入正确的选项!")
英雄联盟商城登录界面~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~(温馨提示)请输入您的选项:1
请输入您的账号:test
请输入您的密码:123456
123456
登录成功!英雄联盟商城登录界面~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~(温馨提示)请输入您的选项:2
请输入您的账号:11
请输入您的密码:11
请输入您的密码:11
注册成功!英雄联盟商城登录界面~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~(温馨提示)请输入您的选项:2
请输入您的账号:11
请输入您的密码:11
注册成功!英雄联盟商城登录界面~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~(温馨提示)请输入您的选项:2
请输入您的账号:test
该账号已被注册!英雄联盟商城登录界面~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~(温馨提示)请输入您的选项:3
退出系统!
练习2: 求50~150之间的质数是那些?
num = int(input("请输入一个整数,判断该数是否是质数:"))flag = True
for i in range(2, num // 2 + 1):if num % i == 0:flag = Falsebreakif flag:print(f"{num}是个质数")
else:print(f"{num}是个合数")
练习3:打印输出标准水仙花数,输出这些水仙花数
def num():for flower in range(100,1000):a = flower//100b = flower//10%10c = flower%10if flower == a**3+b**3+c**3:print(flower)
num()
练习4:一个五位数,若在它的后面写上一个7,得到一个六位数A, 若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此 五位数.
def num ():for i in range(10000,100000):num1=i * 10 + 7num2=i + 700000if num2/num1==5:print(i)
num()
练习5:有一堆硬币,每次
只能拿一个或者两个,求最少多少次可以拿完硬币 [10, 8, 5, 3, 27, 99]
def min_moves_to_finish_coins(coins):count = 0while coins:if len(coins) % 2 == 1:coins.pop(0)else:coins.pop(0)coins.pop(0)count += 1return countcoins_list = [10, 8, 5, 3, 27, 99]
print(min_moves_to_finish_coins(coins_list))
练习6: 如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数"
twin_primes = []for i in range(2, 98): if (i % 2 != 0) and (i + 2 % 2 != 0): is_prime_i = Truefor j in range(2, int(i ** 0.5) + 1):if i % j == 0:is_prime_i = Falsebreakis_prime_i_plus_2 = Truefor k in range(2, int((i + 2) ** 0.5) + 1):if (i + 2) % k == 0:is_prime_i_plus_2 = Falsebreakif is_prime_i and is_prime_i_plus_2:twin_primes.append((i, i + 2))print("100以内的孪生素数有:")
for pair in twin_primes:print(pair)
练习7: 给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和
nums = [5, 3, 8, 1, 9, 2]max_num = nums[0]
min_num = nums[0]total_sum = 0num_count = len(nums)
for num in nums:if num > max_num:max_num = numelif num < min_num:min_num = numtotal_sum += numaverage = total_sum / num_countprint("最大值:", max_num)
print("最小值:", min_num)
print("平均值:", average)
print("求和:", total_sum)
练习8:
将list中的重复数据去重,至少使用两种方案
#方案一
nums = [3, 5, 2, 3, 7, 5, 1, 3, 2]# 使用set去除重复元素
unique_nums = list(set(nums))print(unique_nums)#方案二nums = [3, 5, 2, 3, 7, 5, 1, 3, 2]
unique_nums = []for num in nums:if num not in unique_nums:unique_nums.append(num)print(unique_nums)
练习9:如何将0-10随机存入列表中
num = set({1,2,3,4,5,6,7,8,9,10})
print(list(num)