python练习题三

1.设计一个登录验证程序

"""
任务:设计一个登录验证程序,输入用户名和密码,输出登录是否成功的提示信息,只有三次输入机会。
"""
#循环验证:输入用户名密码;判断正确性;验证正确跳出循环

for n in range(3):
     name=input("请输入用户名:")
     password=input("请输入密码:")
     if name =="user"and password =="123456":
         print("登录成功")
         break
     else:
         print("用户名或者密码错误,请重试!")
else:
    print("登录失败")


#测试例设计:原则覆盖所有分支
#1)第一次输入就成功
#2) 失败两次第三次成功:用户错误;密码错误;都对了
#3) 三次都没成功:用户错误;密码错误;用户名和密码都错误





2.编写程序模拟决赛现场最终成绩计算过程

"""
任务:编写程序模拟决娄现场最終成續计算过程
分析提示:评委人数要大于2,每个评委打分要在0到100之间。最终成绩为去除最高分和最低分的平均分。
"""
def calculate_final_score():
    while True:
        try:
            num_judges = int(input("请输入评委人数:"))  # 获取有效的评委数
            if num_judges <= 2:
                print("评委人数必须大于 2。")
                continue
            scores = []
            for i in range(num_judges):  # 循环所有评委打分
                while True:
                    try:
                        score = int(input(f"请输入第 {i + 1} 个评委的打分(0 - 100):"))
                        if score < 0 or score > 100:
                            print("打分必须在 0 到 100 之间。")
                            continue
                        scores.append(score)
                        break
                    except ValueError:
                        print("请输入有效的整数分数。")
            scores.sort()
            scores = scores[1:-1]
            total_score = sum(scores)
            final_score = total_score / len(scores)
            return round(final_score, 2)
        except ValueError:
            print("请输入有效的评委人数。")


result = calculate_final_score()
if result is not None:
    print(f"最终成绩是:{result}")

3.抓狐狸游戏(并带有详细的异常情况检测)

"""
任务内容:
编写程序,模拟抓狐狸小游戏支持用户依据需要持续玩此游戏。游戏难度分三个等级:1级有5个洞;2级有10个洞;3级有15个洞。
游戏规则:假设一排有5个洞口,小狐狸最开始的时候随机在其中一个洞里。然后,玩家选择一个洞口,如果里面有狐狸则玩家赢结束本轮游戏;如果洞里没有狐狸就到第二天再抓,但是第二天狐狸会在玩家抓之前跳到隔壁洞里。玩家一轮游戏只能抓3次,如果3次用完还没抓到狐狸则玩家输结束本轮游戏。
"""

import random
import time


def game_level():
    while True:
        try:
            level = int(input("请选择游戏难度等级(1 级有 5 个洞;2 级有 10 个洞;3 级有 15 个洞):"))
            if level == 1:
                hole_num = 5
                break
            if level == 2:
                hole_num = 10
                break
            if level == 3:
                hole_num = 15
                break
            else:
                print("输入的等级有误,请重新输入整数 1、2 或者 3。")
        except ValueError:
            print("输入的等级有误,请重新输入整数 1、2 或者 3。")
    return hole_num


def fox_game():
    hole_num = game_level()
    fox_pos = random.randint(0, hole_num - 1)
    attempts = 0
    while attempts < 3:
        try:
            print(f"你还有{3 - attempts}次机会。")
            guess = int(input(f"请选择一个洞口(0 - {hole_num - 1}):"))
            if guess < 0 or guess >= hole_num:
                print(f"输入的洞口编号有误,请在 0 - {hole_num - 1} 之间选择。")
                continue

            if guess == fox_pos:
                print("恭喜你,抓到狐狸了!")
                break
            else:
                print("没抓到狐狸,狐狸跑到隔壁洞了。")
                if fox_pos == hole_num - 1:
                    fox_pos -= 1
                elif fox_pos == 0:
                    fox_pos += 1
                else:
                    move_direction = random.choice([-1, 1])
                    fox_pos += move_direction
                attempts += 1

            pause = input("是否需要暂停游戏(y/n):")
            if pause.lower() == 'y':
                continue_game = input("是否继续游戏(y/n):")
                if continue_game.lower()!= 'y':
                    print("游戏暂停。")
                    time.sleep(3)
                    return
        except ValueError:
            print("输入有误,请输入一个整数。")
    else:
        print("很遗憾,3 次机会用完了,你没有抓到狐狸。")

    play_again = input("是否再玩一轮(y/n):")
    if play_again.lower() == 'y':
        fox_game()
    else:
        print("游戏结束。")


fox_game()

4.列表推导式

"""
任务1:给定一个列表1,使用列表推导式生成列表2,使得列表2中只包含列表1中的非负数,
同时完成不使用列表推导式的代码编写
"""
#列表推导式:
list1 = [1, -2, 3, 0, -4, 5]
list2 = [num for num in list1 if num >= 0]
print(list2)

#不使用列表推导式
list1 = [1, -2, 3, 0, -4, 5]
list2 = []
for num in list1:
    if num >= 0:
        list2.append(num)
print(list2)

5.去除整型数据

"""
任务2:给定一组数据,利用列表和元组的相互转换实现元组元素的更改,去除其中的整型数据。
"""
# 给定一组数据作为元组

data_tuple = (123, 'apple', 456, 'banana', 789, 'orange')

# 将元组转换为列表
data_list = list(data_tuple)

# 去除列表中的整型数据
new_data_list = [item for item in data_list if not isinstance(item, int)]

# 将列表转换回元组
new_data_tuple = tuple(new_data_list)

print(new_data_tuple)

6.控制台一次性输入一组整数值,去除其中的偶数

"""
任务3:控制台一次性输入一组整数值,去除其中的偶数
"""
input_str = input("请输入一组整数值,用逗号分隔:")
input_list = eval(input_str)
result_list = [num for num in input_list if num % 2!= 0]
print(result_list)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值