• 【python基础语法】国庆扩展练习题


    '''
    一、国庆知识小拓展
    1、 用户登陆程序需求:
    1. 输入用户名和密码;
    2. 判断用户名和密码是否正确? (name='root', password='123')
    3. 为了防止暴力破解, 登陆仅有三次机会, 如果超过三次机会, 提示错误次数过多,账号已被冻结;
    
    2、给定一个句子(只包含字母和空格), 将句子中的单词位置反转
    比如: “hello xiao mi” > “mi xiao hello”
    
    3、运行程序,提示用户依次输入三个整数x,y,z,请把判断三个数的大小,然后由小到大打印输出到控制台。
    
    4、 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多
    少米?第10次反弹多高?
    
    5、题目:猴子吃桃问题:
     猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃
    了一个。以后每天早上都吃了前一天剩下的一半 在加一个。到第10天早上想再吃时,见只剩下一个桃子了。
    请通过一段通过代码来计算第一条摘了多少个桃子?
    
    6、题目:输入某年某月某日,判断这一天是这一年的第几天?
    
    7、小明有100块钱 ,准备买100本书,a类数5元一本,b类书3元一本,c类书 1元2本。请计算小明有多少种购买的
    方式?
    
    8、题目:企业发放的奖金根据利润提成。
    利润(I)低于或等于10万元时,奖金可提10%;
    利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
    20万到40万之间时,高于20万元的部分,可提成5%;
    40万到60万之间时,高于40万元的部分,可提成3%;
    60万到100万之间时,高于60万元的部分,可提成1.5%,高于
    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
    
    9、编写一个自动售货机,运行功能如下:
    1、请按下面提示,选择购买的商品
    1). 可乐 2.5元   2). 雪碧 2.5元   3). 哇哈哈 3元   4). 红牛 6元   5). 脉动 4元   6). 果粒橙 3.5元
    2、提示用户投币(支持1元,5元,10元)
    用户输入投币金额,
    用户投币金额不够商品价格,继续提示投币,
    当投币超过商品价格,则返回商品和找零,然后结束程序
    
    '''
    
    """
    第一题:用户登陆程序需求:
    1. 输入用户名和密码;
    2. 判断用户名和密码是否正确? (name='root', password='123')
    3. 为了防止暴力破解, 登陆仅有三次机会, 如果超过三次机会, 提示错误次数过多,账号已被冻结;
    """
    # 方式一
    def user_login():
        i = 0
        while True:
            user_name = input("请输入用户名:")
            password = input("请输入密码:")
            user_storage = {"name": "root", "password": "123"}
            if i < 3:
                if user_name == user_storage["name"] and password == user_storage["password"]:
                    print("登录成功!")
                    break
                else:
                    i += 1
                    print("您输入的账号或密码错误,请重新输入!")
            else:
                print("错误次数过多,账号已被冻结")
    user_login()
    
    # 方式二
    def user_login():
        for i in range(1,4):
            user_name = input("请输入用户名:")
            pass_word = input("请输入密码:")
            if user_name == 'root' and pass_word == "123":
                print("登录成功!")
                break
            else:
                print("您输入的账号或者密码有误,您还有{}次输入计会".format(3-i))
        else:
            print('今日的三次机会已用完,错误次数过多,账号已被冻结')
    user_login()
    
    """
    第二题:
    给定一个句子(只包含字母和空格)将句子中的单词位置反转,
    比如:  “hello xiao mi”> “mi xiao hello”
    """
    def String_inversion():
        str = "hello xiao mi"
        # 字符串转换为列表,以空格作为分隔符
        list = str.split(" ")
        # 列表元素反转,不用
        list.reverse()
        # 将列表重新拼接为字符串
        str1 = " ".join(list)
        print(str1)
    String_inversion()
    
    """
    第三题:
    运行程序,提示用户依次输入三个整数x,y,z,请把判断三个数的大小
    ,然后由小到大打印输出到控制台。
    """
    def number_sort():
        x = int(input("请输入第一个整数:"))
        y = int(input("请输入第二个整数:"))
        z = int(input("请输入第三个整数:"))
        li = [x,y,z]
        li.sort()
        for num in li:
            print(num)
    number_sort()
    
    """
    第四题:
    题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;
    再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
    """
    # 方法一:
    def sum_high():
        # 记录次数
        i = 0
        # 定义总距离
        sum_high = 0
        # 第一次下落高度
        high = 100
        while True:
            if i < 11:
                # 落下的距离 + 反弹的距离 + 经过的距离
                sum_high = sum_high + high + high/2
                # 反弹的距离
                high = high/2
                i += 1
            else:
                print("共经过{}米".format(sum_high - high))
                print("第10次反弹{}米".format(high))
                break
    sum_high()
    
    # 方法二:
    def sum_high():
        # 定义总距离
        sum_high = 0
        # 第一次下落高度
        high = 100
        for i in range(10):
            sum_high = sum_high + high + high/2
            high = high/2
        print("共经过{}米".format(sum_high - high))
        print("第10次反弹{}米".format(high))
    sum_high()
    
    """
    第五题:
    题目:猴子吃桃问题:
    猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,多吃了一个。
    以后每天早上都吃了前一天剩下的一半  在加一个。
    到第10天早上想再吃时,见只剩下一个桃子了。
    
    请通过一段通过代码来计算第一条摘了多少个桃子?
    """
    def Peach_quantity():
        sum = 1
        for i in range(10):
            print("第{}天的桃子数量:{}".format(10 - i, sum))
            sum = (sum  + 1)*2
    Peach_quantity()
    
    """
    第六题
    题目:输入某年某月某日,判断这一天是这一年的第几天?
    """
    def work6():
        str1 = input("请输入年月日:例 2019-9-29:")
        # 获取年月日,转换位数值类型
        year, month, day = str1.split('-')
        year = int(year)
        month = int(month)
        day = int(day)
        # 公历闰年判定遵循的规律为:四年一闰、百年不闰、400年再闰
        # 判断是否位闰年(公历闰年的计算方法:普通年能被四整除且不能被100整除的为闰年)
        if (year % 100 == 0 and year % 400 == 0) or (year % 100 != 0 and year % 4 == 0):
            # 正常的年份
            r_days = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]
            data =  r_days[month - 1] + day
        else:
            days = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
            data = days[month- 1] + day
        print('这个{}年的第{}天'.format(year,data))
    work6()
    
    """
    # 第七题
    7、小明有100块钱 ,准备买100本书,
    a类数5元一本,b类书3元一本,c类书 1元2本。
    请计算小明有多少种购买的方式?
    """
    def work7():
        count = 0
        for a in range(100 // 5 + 1):
            for b in range(100 // 3 +1):
                if a * 5 + b * 3 + (100 - a - b) * 0.5 <= 100:
                    count += 1
        print(count)
    work7()
    
    """
    # 第八题
    8、题目:企业发放的奖金根据利润提成。
    利润(I)低于或等于10万元时,奖金可提10%;
    利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
    20万到40万之间时,高于20万元的部分,可提成5%;
    40万到60万之间时,高于40万元的部分,可提成3%;
    60万到100万之间时,高于60万元的部分,可提成1.5%,高于
    100万元时,超过100万元的部分按1%提成,
    
    从键盘输入当月利润I,求应发放奖金总数?
    """
    def work8():
        i = int(input("请输入当月利润:"))
        if i <= 10:
            salary = i * 0.1
            print("应发放奖金总数为:{}万".format(salary))
        elif i <= 20 and i > 10:
            salary = 10 * 0.1 + (i-10)*0.075
            print("应发放奖金总数为:{}万".format(salary))
        elif i <= 40 and i > 20:
            salary = 10 * 0.1 + 10 * 0.075 + (i - 20) * 0.05
            print("应发放奖金总数为:{}万".format(salary))
        elif i <= 60 and i > 40:
            salary = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (i - 40) * 0.03
            print("应发放奖金总数为:{}万".format(salary))
        elif i <= 100 and i > 60:
            salary = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (i - 60) * 0.015
            print("应发放奖金总数为:{}万".format(salary))
        else:
            salary = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (i - 100) * 0.01
            print("应发放奖金总数为:{}万".format(salary))
    work8()
    
    """
    # 第九题:
    编写一个自动售货机,运行功能如下:
    1、请按下面提示,选择购买的商品
    ​    1). 可乐  2.5元
    ​    2). 雪碧  2.5元
    ​    3). 哇哈哈   3元
    ​    4). 红牛  6元
    ​    5). 脉动   4元
    ​    6). 果粒橙 3.5元
    
    2、提示用户投币(支持1元,5元,10元)
    ​    用户输入投币金额,    
    ​    用户投币金额不够商品价格,继续提示投币,
    ​    当投币超过商品价格,则返回商品和找零,然后结束程序
    """
    def work9():
        print("请按下面提示选择购买的商品:")
        print("1). 可乐  2.5元")
        print("2). 雪碧  2.5元")
        print("3). 哇哈哈   3元")
        print("4). 红牛  6元")
        print("5). 脉动   4元")
        print("6). 果粒橙 3.5元")
        num = input("请输入您的选项:")
        if num == "1":
            print("您购买的是可乐,需要支付金额为2.5元")
            price = 2.5
        elif num == "2":
            print("您购买的是雪碧,需要支付金额为2.5元")
            price = 2.5
        elif num == "3":
            print("您购买的是哇哈哈,需要支付金额为3元")
            price = 2.5
        elif num == "4":
            print("您购买的是红牛,需要支付金额为6元")
            price = 2.5
        elif num == "5":
            print("您购买的是脉动,需要支付金额为4元")
            price = 2.5
        elif num == "6":
            print("您购买的是果粒橙,需要支付金额为3.5元")
            price = 2.5
        else:
            print("您的输入有误!")
            # 输入错误的情况下使用return终止函数的运行(退出程序)。
            return
        # 用户投币
        money = 0
        while money < price:
            m = input("请输入投币金额【支持1元,5元,10元】:")
            if m in ["1", "5", "10"]:
                money += int(m)
            else:
                print("您投币的金额有误或者不支持该面额")
        else:
            print("您的投币金额为{}元,商品的价格为{}元,找零{}元".format(money, price, (money - price)))
    work9()
  • 相关阅读:
    argparse模块的使用
    tf.stack() /tf.unstack()
    什么是tensor
    tf.size()函数
    tf.nn.l2_loss()的用法
    CNN中的卷积
    tf.reverse()
    学习音视频编程技术 博客
    shell 批量计算MD5值
    线程池的实现
  • 原文地址:https://www.cnblogs.com/python-test001/p/12365630.html
Copyright © 2020-2023  润新知