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()                    # 停止画笔绘制,窗体不关闭

总结

一定要好好复习

posted @ 2022-01-12 00:00  cactus9  阅读(181)  评论(0编辑  收藏  举报