Python_杂学系列_2.复习代码
目录
前言
仅供python复习
一、有四个数字:1、2、3、4
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if( i != k ) and (i != j) and (j != k):
print (f'{i},{j},{k}')
##-----------------------------------;
# list = [1,2,3,4]
# for i in list:
# list1 = list.copy()
# list1.remove(i)
# for j in list1:
# list2 = list1.copy()
# list2.remove(j)
# for k in list2:
# print(i, j, k)
二、递归函数
num1 = int(input("请输入要求的阶层:"))
def forr(num):
if num == 1:
return 1
else:
return num * forr(num - 1)
a = forr(num1)
print(a)
while 1:
num2 = int(input("请输入要求的阶层:"))
a = forr(num2)
print(a)
ch = input("是否继续进行运算(输入Y或N)?")
if ch == "N" or ch == "n":
break
三、迭代器
st=[1,2,3,4,]
it=iter(st)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
四、九九乘法表
for j in range(1,10):
for i in range(1,j+1):
print('%d*%d=%d'%(i,j,i*j),end='\t')
i+=1
print()
j+=1
五、不定长参数*args,**kwargs
def re(*args):
print(args)
re(1, 2.1, "luyi", True)
def re(**kwargs):
print(kwargs)
re(a=1, b=2.1, c="luyi", d=True)
def id(time, air, tem):
print(f'明天几号:{time}')
print(f"明天几号:{air}")
print(f"明天几号:{tem}")
id(1, 2, 3)
六、当前时间,计算海里
import time
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
hl=input("请输入海里:")
gl=float(hl)/1.825
print("计算出来的公里为:",gl)
七、字典推导式
def getPairs(dict):
for k,v in dict.items() :
print(k,v,sep=':')
getPairs({ x : x ** 3 for x in (1,2,3,4)})
八、计算机
num_one = int(input('请输入第一个数:'))
num_two = int(input('请输入第二个数:'))
def oper(parm_one, parm_two):
operator = input('请选择要执行的运算符:+、-、*、/' + '\n')
if operator == "+":
print("计算结果为:", +parm_one + parm_two)
elif operator == '-':
print("计算结果为:", parm_one - parm_two)
elif operator == '*':
print("计算结果为:", parm_one * parm_two)
elif operator == '/':
if parm_two == 0:
print('被除数不能为0')
else:
print("计算结果为:", parm_one / parm_two)
oper(num_one, num_two)
九、输出0-100的偶数,素数
i=0
while i<100:
if i%2==0:
print(i)
i+=1
i=2
for i in range(2,100):
j=2
for j in range(2,i):
if i%j==0 :
break
else : print(i)
十、个人的BMI指数
"""
根据用户输入的数据实现计算BMI值
"""
'''
体质指数(BMI)=体重(kg)÷身高*身高(m)
成人的BMI数值:
过轻:低于18.5
正常:18.5-23.9
过重:24-27
肥胖:28-32
非常肥胖, 高于32
'''
# 将输入的身高体重转换为float类型
height = float(input('请输入您的身高(m):'))
weight = float(input('请输入您的体重(kg):'))
BMI = weight / (height * height)
print('您的BMI值为%.2f' % BMI)
if BMI < 18.5:
print('体重过轻')
elif 18.5 <= BMI <= 23.9:
print('体重正常')
elif 24 <= BMI <= 27:
print('体重过重')
elif 28 <= BMI <= 32:
print('体重肥胖')
else:
print('非常肥胖')
11. 文本进度条
import time
incomplete_sign = 50 # .的数量
print('='*23+'开始下载'+'='*25)
for i in range(incomplete_sign + 1):
completed = "*" * i # 表示已完成
incomplete = "." * (incomplete_sign - i) # 表示未完成
percentage = (i / incomplete_sign) * 100 # 百分比
print("\r{:.0f}%[{}{}]".format(percentage, completed, incomplete), end="")
time.sleep(0.5)
print("\n" + '='*23+'下载完成'+'='*25)
"""
本案例涉及到print()函数、for循环、以及format()方法的使用。首先定义一个变量接收总的任务量,
然后在for循环体中编写表示已完成、未完成、完成百分比,最后使用format()方法将字符串进行格式化输出,
需要说明的是\r在这里表示将默认输出的内容返回到第一个指针,后面的内容会覆盖掉前面的内容,这样就达到了
实时显示进度条的功能。
\r 默认表示将输出的内容返回到第一个指针,这样的话,后面的内容会覆盖前面的内容
"""
12.敏感词替换
"""
敏感词过滤
思路:给定一个字符串,判断字符串中的文字是否在用户输入的数据中,如果存在使用*替换
"""
sensitive_character = '你好' # 敏感词库
test_sentence = input('请输入一段话:')
for line in sensitive_character: # 遍历输入的字符是存在敏感词库中
if line in test_sentence: # 判断是否包含敏感词
test_sentence = test_sentence.replace(line, '*')
print(test_sentence)
# 你好,我是张三
13.判断水仙花数
num3 = int(input("请输入一个三位数:"))
hundreds_place = int(num3 // 100 % 10) # 百位
ten_place = int(num3 / 10 % 10) # 十位
one_place = int(num3 % 10) # 个位
if hundreds_place ** 3 + ten_place ** 3 + one_place ** 3 == num3:
print(f"{num3}是水仙花数")
else:
print(f"{num3}不是水仙花数")
14. 找出最大数
num_one = int(input("请输入一个整数:"))
num_two = int(input("请输入一个整数:"))
num_three = int(input("请输入一个整数:"))
if num_one > num_two:
if num_one > num_three:
print("最大的数是:", num_one)
else:
print("最大的数是:", num_three)
else:
if num_two > num_three:
print("最大的数是:", num_two)
else:
print("最大的数是:", num_three)
15.计算三角形面积
one_len = float(input('输入三角形第一边长: '))
two_len = float(input('输入三角形第二边长: '))
three_len = float(input('输入三角形第三边长: '))
# 计算半周长
s = (one_len + two_len + three_len) / 2
# 计算面积
area = (s * (s - one_len) * (s - two_len) * (s - three_len)) ** 0.5
print('三角形面积为%0.1f' % area)
16.下载模拟操作
select = input('是否需要下载?(y/n):')
if select == 'y' or select == 'Y':
print('----正在请求下载----')
elif select == 'n' or select == 'N':
print('----3秒后将返回首页----')
elif select != 'y' and 'n':
print('输入有误,请重新选择')
17. 判断4位回文数
def hui(palindrome_num):
# palindrome_num = int(input("请输入一个四位数:"))
single = (palindrome_num //1000)
ten = (palindrome_num //100 % 10)
hundred = (palindrome_num //10 % 10)
ths = int(palindrome_num % 10)
reverse_order = ths * 1000 + hundred * 100 + ten * 10 + single
if palindrome_num == reverse_order:
print(palindrome_num,"是回文数")
else:
print(palindrome_num,"不是回文数")
while 1:
s1=int(input("请输入一个四位数:"))
hui(s1)
ch=input("是否继续判断(请输入y/n)?")
if ch=="n":
break
18. 数据加密
raw_data = input('请输入密码:')
num_asc = 0 # ASCII累加值
str_pwd = '' # ASCII拼接值
for i in raw_data:
ascii_val = ord(i) # 1.获取每个元素的ASCII值
num_asc = ascii_val + num_asc # 2.对遍历的ASCII值进行累加操作
str_pwd += str(ascii_val) # 3.拼接操作
reversal_num = str_pwd[::-1] # 4.将拼接的ASCII值倒序排列
encryption_num = int(reversal_num) + num_asc # 5.进行运算操作
print(f"加密后的密码为:{encryption_num}")
19.逢七拍手游戏
# 包含7和7的倍数小游戏(100以内)
for i in range(1, 101):
# 把i转成字符串,使用find方法(字符串中不包含时,返回-1)
include = str(i).find("7")
# 判断条件:既不包含7,也不是7的倍数
if include == -1 and int(i) % 7 != 0:
# 输出,去掉了换行符,加了、
print(i, end="、")
# 如果包含7 输出*
elif include != -1 or int(i) % 7 == 0:
print("*", end='、')
20.登录系统账号检测
"""
用户名:admin
密码:123
"""
count = 0 # 用于记录用户错误次数
while count < 3:
user = input("请输入您的账号:")
pwd = input("请输入您的密码:")
if user == 'admin' and pwd == '123': # 进行账号密码比对
print('登录成功')
break
else:
print("用户名或密码错误")
count += 1 # 初始变量值自增1
if count == 3: # 如果错误次数达到3次,则提示并退出
print("输入错误次数过多,请稍后再试")
else:
print(f"您还有{3-count}次机会") # 显示剩余次数
21.猜数游戏
import random
print("猜数字游戏,输入一个1-100以内的数字")
random_num = random.randint(1, 100)
# print(random_num) # 打开注释可查看生成的随机数
for frequency in range(1,6):
number = input("请输入一个数字:")
if number.isdigit() is False:
print('请输入一个正确的数字')
elif int(number) < 0 or int(number) > 100:
print("请输入1-100范围的数字")
elif random_num == int(number):
print("恭喜你用了%d次猜对了" % frequency)
break
elif random_num > int(number):
print("很遗憾,你猜小了")
else:
print("很遗憾,你猜大了")
if frequency == 5:
print("很遗憾,%d次机会已用尽,游戏结束,答案为%d" %
(frequency, random_num))
# import random
# name = input('您的大名是?')
# print('您好,' + name + '!我们来玩儿猜数字游戏吧!')
# minNum = int(input('请输入一个最小值:'))
# maxNum = int(input('再输入一个最大值:'))
# secret = random.randint(minNum, maxNum)
# guess = 0
# tries = 0
# while guess != secret and tries < 5:
# guess = int(input('猜数字游戏开始,请输入数字:'))
# if guess > secret:
# print('您输入的数字大了!')
# elif guess < secret:
# print('您输入的数字小了!')
# tries += 1
# print('这是您第' + str(tries) + '次尝试!')
# if guess == secret:
# print('恭喜,您猜对了!')
# print('游戏结束,再见!^_^')
# else:
# print('哦哟,机会用完了,下次再来吧!')
22. 刮刮乐
reward_info = ["谢谢惠顾", "一等奖", "三等奖", "谢谢惠顾", "谢谢惠顾", "三等奖", "二等奖", "谢谢惠顾"]
num = int(input("请输入刮去的位置(1~8):"))
if 0 <= num <= len(reward_info):
info = reward_info[num - 1]
print(f"{info}")
else:
print("输入的位置不合规!")
23.商品价格区间排序
price_li = [399, 4369, 539, 288, 109, 749, 235, 190, 99,1000]
section_li = []
max_section = int(input("请输入最大价格:"))
min_section = int(input("请输入最小价格:"))
for i in price_li:
if min_section <= i <= max_section:
section_li.append(i)
print("1.价格降序排序")
print("2.价格升序排序")
choice_num = int(input("请选择排序方式:"))
if choice_num == 1:
section_li.sort(reverse=True)
else:
section_li.sort()
print(section_li)
24.好友管理系统
"""
好友系统
增加
删除
修改
查询
"""
# friend = ['张三', '李四', '王五']
friends = []
print("欢迎使用好友系统")
print("1:添加好友")
print("2:删除好友")
print("3:备注好友")
print("4:展示好友")
print("5:退出")
while True:
num = int(input("请输入您的选项:"))
if num == 1:
add_friend = input("请输入要添加的好友:")
friends.append(add_friend)
print('好友添加成功')
elif num == 2:
del_friend = input("请输入删除好友姓名:")
friends.remove(del_friend)
print("删除成功")
elif num == 3:
before_friend = input("请输入要修改的好友姓名:")
after_friend = input("请输入修改后的好友姓名:")
friend_index = friends.index(before_friend)
friends[friend_index] = after_friend
print("备注成功")
elif num == 4:
if len(friends) == 0:
print("好友列表为空")
else:
for i in friends:
print(i)
elif num == 5:
break
25.中文数字对照表
uppercase_numbers = ("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
number = input("请输入一个数字:")
for i in range(len(number)):
print(uppercase_numbers[int(number[i])], end="")
26.手机通讯录
# 实际案例中,将删除查找联系人功能(index方法没有涉及)
person_info = []
print("=" * 20)
print('欢迎使用通讯录:')
print("1.添加联系人")
print("2.查看通讯录")
print("3.删除联系人")
print("4.修改联系人信息")
print("5.查找联系人")
print("6.退出")
print("=" * 20)
while True:
per_dict = {}
fun_num = input('请输入功能序号:')
if fun_num == '1':
per_name = input('请输入联系人的姓名:')
phone_num = input('请输入联系人的手机号:')
per_email = input('请输入联系人的邮箱:')
per_address = input('请输入联系人的地址:')
# 判断输入的是否为空
if per_name.strip() == '':
print('请输入正确信息')
continue
else:
per_dict.update({'姓名': per_name,
'手机号': phone_num,
'电子邮箱': per_email,
'联系地址': per_address})
person_info.append(per_dict) # 保存到列表中
print('保存成功')
elif fun_num == '2':
if len(person_info) == 0:
print('通讯录无信息')
for i in person_info:
for title, info in i.items():
print(title + ':' + info)
elif fun_num == '3': # 删除
if len(person_info) != 0:
del_name = input('请输入要删除的联系人姓名:')
for i in person_info:
if del_name in i.values():
person_info.remove(i)
print(person_info)
print('删除成功')
else:
print('该联系人不在通讯录中')
else:
print('通讯录无信息')
elif fun_num == '4': # 修改
if len(person_info) != 0:
modi_info = input('请输入要修改联系人姓名:')
for i in person_info:
if modi_info in i.values():
# 获取所在元组在列表中的索引位置
index_num = person_info.index(i)
dict_cur_perinfo = person_info[index_num]
for title, info in dict_cur_perinfo.items():
print(title + ':' + info)
modi_name = input('请输入新的姓名:')
modi_phone = input('请输入新的手机号:')
modi_email = input('请输入新的邮箱:')
modi_address = input('请输入新的地址:')
dict_cur_perinfo.update(姓名= modi_name)
dict_cur_perinfo.update(手机号= modi_phone)
dict_cur_perinfo.update(电子邮箱= modi_email)
dict_cur_perinfo.update(联系地址= modi_address)
print(person_info)
else:
print('通讯录无信息')
elif fun_num == '5': # 查找
if len(person_info) != 0:
query_name = input('请输入要查找的联系人姓名:')
for i in person_info:
if query_name in i.values():
index_num = person_info.index(i)
for title, info in person_info[index_num].items():
print(title + ':' + info)
break
else:
print('该联系人不在通讯录中')
else:
print('通讯录无信息')
elif fun_num == '6': # 退出
break
27.生词本
data_set = set()
print('=' * 20)
print('欢迎使用生词记录器')
print('1.查看单词本')
print('2.背单词')
print('3.添加新单词')
print('4.删除单词')
print('5.清空单词本')
print('6.退出')
print('=' * 20)
while 1:
word_data_dict = {}
fun_num = input('请输入功能编号:')
if fun_num == '1': # 查看生词本
if len(data_set) == 0:
print('生词本内容为空')
else:
print(data_set)
elif fun_num == '2': # 背单词
if len(data_set) == 0:
print('生词本内容为空')
else:
for random_words in data_set:
w = random_words.split(':')
in_words = input("请输入" + w[1]+':\n')
if in_words == w[2].strip():
print('太棒了')
else:
print('再想想')
elif fun_num == '3': # 添加新单词
new_words = input('请输入新单词:')
new_china = input('请输入单词翻译:')
word_data_dict.update({'单词': new_words, '翻译': new_china})
dict_str = str(word_data_dict).replace('{', '') \
.replace('}', '').replace("'", '')
data_set.add(dict_str)
print('单词添加成功')
dict_str = dict_str.replace(',','')
print(dict_str)
elif fun_num == '4': # 删除单词
if len(data_set) == 0:
print('生词本为空')
else:
li_st = list(data_set)
print(li_st)
del_wd = input("请输入要删除的单词:")
for i in li_st:
if del_wd in i:
data_set.remove(i)
print('删除成功')
break
else:
print('请输入正确的单词')
elif fun_num == '5': # 清空
if len(data_set) == 0:
print('生词本为空')
else:
data_set.clear()
print('清空')
elif fun_num == '6':
break
28.学生信息管理系统
"""
使用自定义函数,完成对程序的模块化
学生信息包含:姓名、性别、手机号
该系统具有的功能:添加、删除、修改、显示、退出系统
设计思路:
提示用户选择功操作
获取用户选择的功能
根据用户的选择,分别调用不同的函数
"""
# 新建一个列表,用来保存学生的所有信息
stu_info = []
# 功能打印
def print_menu():
print('=' * 30)
print('学生管理系统')
print('1.添加学生信息')
print('2.删除学生信息')
print('3.修改学生信息')
print('4.显示所有学生信息')
print('0.退出系统')
# 定义一个添加学生信息的函数
def add_stu_info():
# 提示并获取学生的姓名
new_name = input('请输入新学生的姓名:')
# 提示并获取学生的性别
new_sex = input('请输入新学生的性别:')
# 提示并获取学生的手机号
new_phone = input('请输入新学生的手机号码:')
new_info = dict()
new_info['name'] = new_name
new_info['sex'] = new_sex
new_info['phone'] = new_phone
stu_info.append(new_info)
# 定义删除学生信息的函数
def del_stu_info(student):
del_num = int(input('请输入要删除的序号:')) - 1
if del_num in range(0,len(student)):
del student[del_num]
else:
print('数据不存在')
# 定义修改学生信息的函数,具体代码如下:
def modify_stu_info():
if len(stu_info) !=0:
stu_id = int(input('请输入要修改学生的序号:'))
new_name = input('请输入要修改学生的姓名:')
new_sex = input('请输入要修改学生的性别:(男/女)')
new_phone = input('请输入要修改学生的手机号码:')
stu_info[stu_id - 1]['name'] = new_name
stu_info[stu_id - 1]['sex'] = new_sex
stu_info[stu_id - 1]['phone'] = new_phone
else:
print('学生信息表为空')
# 定义显示学生信息的函数
def show_stu_info():
print('学生的信息如下:')
print('=' * 30)
print('序号 姓名 性别 手机号码')
i = 1
for tempInfo in stu_info:
print("%d %s %s %s" %
(i, tempInfo['name'], tempInfo['sex'], tempInfo['phone']))
i += 1
# 在main函数中执行不同的功能
def main():
while True:
print_menu() # 打印菜单
key = input("请输入功能对应的数字:") # 获取用户输入的序号
if key == '1': # 添加学生信息
add_stu_info()
elif key == '2': # 删除学生信息
del_stu_info(stu_info)
elif key == '3': # 修改学生信息
modify_stu_info()
elif key == '4': # 查看所有学生的信息
show_stu_info()
elif key == '0':
quit_confirm = input('确认退出?(Yes or No):')
if quit_confirm == 'Yes':
break # 跳出循环
else:
print('输入有误,请重新输入')
if __name__ == '__main__':
main()
29.斐波那契数列
"""
使用递归解决 斐波那契数列
"""
def fib(n):
if n == 1 or n == 2:
return 1
return fib(n - 1) + fib(n - 2)
number = int(input('请输入一个正整数: '))
result = fib(number)
print("第%d个斐波那契数为:%d" % (number, result))
# def factorial(n):
# if n < 1:
# return -1
# if n == 1 or n == 2:
# return 1
# else:
# return factorial(n - 1) + factorial(n - 2)
#
#
# number = int(input('请输入一个正整数:'))
# result = factorial(number)
# print("%d 的斐波那契数列最大值:%d" % (number, result))
30.随机生成验证码
"""
随机生成6位的验证码(字母数字随机组合,包含大小写)
chr()函数返回值是当前整数对应的ascii字符。
"""
import random
def verifycode():
code_list = ''
# 每一位验证码都有三种可能(大写字母,小写字母,数字)
for i in range(6): # 控制验证码生成的位数
state = random.randint(1, 3)
if state == 1:
first_kind = random.randint(65, 90) # 大写字母
random_uppercase = chr(first_kind)
code_list = code_list + random_uppercase
elif state == 2:
second_kinds = random.randint(97, 122) # 小写字母
random_lowercase = chr(second_kinds)
code_list = code_list + random_lowercase
elif state == 3:
third_kinds = random.randint(0, 9)
code_list = code_list + str(third_kinds)
return code_list
if __name__ == '__main__':
verifycode = verifycode()
print(verifycode)
31.绘制多角星
import turtle as t
t.color('black', 'red') # 设置画笔颜色,以及填充颜色
t.setup(450, 400) # 设置主窗口的大小为450*400
t.begin_fill() # 在绘制要填充的形状之前调用
while True:
t.forward(150) # 向当前画笔移动150个像素
t.left(150) # 逆时针移动150
if abs(t.pos()) < 1: # 如果当位置绝对值小于跳出循环
break
t.end_fill() # 结束填充位置
t.done() # 停止画笔绘制,窗体不关闭
总结
一定要好好复习