python一级模拟题二及答案,python一级题目及答案

本篇文章给大家谈谈python一级模拟题二及答案,以及python一级题目及答案,希望对各位有所帮助,不要忘了收藏本站喔。

题目 1:水仙花数

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number)

水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153python工程师怎么考

for i in range(100, 1000):  
    i1 = i // 100       # 取百位数字 123//100=1  
    i2 = i // 10 % 10   # 取十位数字 123//10=12  12%10=2  
    i3 = i % 10         # 取个位数字 123%10=3  
  
    if i1 ** 3 + i2 ** 3 + i3 ** 3 == i:  
        print(f"{i}是水仙花数")  
        # 153 是水仙花数  
        # 370 是水仙花数  
        # 371 是水仙花数  
        # 407 是水仙花数  


题目 2:四叶玫瑰数

四叶玫瑰数是 4 位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。

(例如:当 n 为 3 时,有 1^3 + 5^3 + 3^3 = 153,153 即是 n 为 3 时的一个自幂数,3 位数的自幂数被称为水仙花数)。

for i in range(1000,10000):  
    i1 = i // 1000      # 取千位数字 1234//1000=1  
    i2 = i // 100 % 10  # 取百位数字 1234//100=12  12%10=2  
    i3 = i // 10 % 10   # 取十位数字 1234//10=123  123%10=3  
    i4 = i % 10         # 取个位数字 1234%10=4  
    # print(i,i1,i2,i3,i4)  
  
    if i1 ** 4 + i2 ** 4 + i3 ** 4 + i4 ** 4 == i:  
        print(f'{i}是四叶玫瑰数')  
        # 1634 是四叶玫瑰数  
        # 8208 是四叶玫瑰数  
        # 9474 是四叶玫瑰数  


题目 3:逆序输出字符串
  • 写法 1:切片方式
str = input("请输入字符串")  
print(str[::-1])  


  • 写法 2:循环转换
str = input("请输入字符串")  
list = []  
for x in range(len(str) -1,-1,-1):  
    list.append(str[x])  
print(''.join(list))  


题目 4:猜数字小游戏

需求分析:

随机生成一个 100 以内的整数,共有 10 次机会开始游戏,输入猜测的数字。

  • 如果猜小了,则提示:猜小了

  • 如果猜大了,则提示:猜大了

  • 猜对了,则提示:猜对了,并且结束游戏

  • 10 次机会用完还没猜对,提示:游戏结束,没有猜到。

import random as rd  
  
number = rd.randint(0,100)  
for i in range(10):  
    choice = int(input("请输入你要猜测的数字:"))  
    if choice > number:  
        print("你猜大了")  
    elif choice < number:  
        print("你猜小了")  
    else:  
        print("你猜对了,真棒!")  
        print(f'你一共用了{i + 1}次机会')  
        break  
    print(f'还剩{9 - i}次机会')  
else:  
    print('游戏结束,你没有猜到')  


题目 5:百鸡百钱

需求分析:

公鸡每只 5 元,母鸡每只 3 元,小鸡 3 只一元,现要求用 100 元钱买 100 只鸡(三种类型的鸡都要买),问公鸡、母鸡、小鸡各买几只?

数学方程:

  • 设公鸡买了 x 只,母鸡买了 y 只,小鸡买了 z 只

  • x+y+z= 100

  • 5x+3y+z/3 = 100

算法思路

  • 以公鸡为突破点,公鸡 5 元一只,100 元最多只能买 20 只,

  • 由于三种鸡都要买,所以公鸡数一定是小于 20 的。

  • 母鸡每只 3 元,100 全拿来买母鸡,最多也不能超过 33 只

  • 设公鸡数为 x,母鸡数为 y,小鸡 z 只

  • 只要满足 5x+3y+z/3=100 和 x+y+z==100 就可以输出此种组合的结果.

count = 0  
for x in range(1,20):  
    for y in range(1,33):  
        z = 100 - x -y  
        if z > 0 and 5 * x + 3 * y + z / 3 == 100:  
            count += 1  
            print("="*60)  
            print(f'第{count}种买法,公鸡买了{x}只,母鸡买了{y}只,小鸡买了{z}只')  
            # == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==  
            # 第1种买法,公鸡买了4只,母鸡买了18只,小鸡买了78只  
            # == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==  
            # 第2种买法,公鸡买了8只,母鸡买了11只,小鸡买了81只  
            # == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==  
            # 第3种买法,公鸡买了12只,母鸡买了4只,小鸡买了84只  


题目 6:闰年问题升级版

输入年月日,输出该日期是否是闰年,并且输出该日期是此年份的第几天

闰年判断条件:

  • 能被 4 整除,并且不能被 100 整除

  • 能被 400 整除

  • 两个条件满足任意一个就为闰年

算法思路:

  • 接收用户输入的年月日,创建保存 12 个月份天数的列表

  • 根据年份判断是否是闰年,如果是把二月份设为 29 天,否则把二月份设为 28 天

  • 根据月份和日期统计是当年的第几天

year = int(input("请输入年份"))  
month = int(input("请输入月份"))  
day = int(input("请输入日期"))  
  
date_list = [31,29,31,30,31,30,31,31,30,31,30,31]  
count_day = day  
if year % 4 == 0 and year % 100 !=0 or year % 400 == 0:  
    print(f'{year}年是闰年')  
    date_list[1]=29  
else:  
    print(f'{year}年是平年')  
    date_list[1]=28  
  
for i in range(month-1):  
    count_day += date_list[i]  
  
print(f'{year}年{month}月{day}日是当年的第{count_day}天')  


题目 7:猴子吃桃问题

需求分析:

  • 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

  • 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

  • 以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。

  • 求原来它一共摘了多少个桃子。

这题可以用递归思想倒着推。

  • 第 10 天还没吃,就剩 1 个,说明第 9 天吃完一半再吃 1 个还剩 1 个。

  • 假设第 9 天还没吃之前有桃子 p 个

  • 可得:p/2 - 1 = 1,得出第九天的桃子数 p=4。

  • 以此类推,即可算出第一天摘了多少桃子.

算法思路:

  • 第 10 天还没吃之前的桃子数量初始化 p=1

  • 从 9 至 1 循环 9 次,根据上述公式反推为 p=(p+1)*2 可得第 1 天还没吃之前的桃子数量

p = 1  
pr
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值