测验2: Python基础语法(上) (第4周)

好好学习
天天向上

Python练习题——快乐数字

题目来源:Python语言程序设计(中国大学MOOC)
授课老师:嵩天、黄天羽、礼欣


题目描述:
编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
例如:19是一个快乐数字,计算过程如下:
• 1^2+9^2=82
• 8^2+2^2=68
• 6^2+8^2=100
• 1^2+0^2+0^2=1
要求:当输入快乐的数字时,输出True,否则输出False。
题目分析:
将数字n按位转化为列表,然后循环求元素的平方和,只至结果n==1 or n ==4;
建议百度快乐数的循环结构。

非快乐数总是进入下列重复数列中:
4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4
例如非快乐数8、14:
8 → 64 → 52 → 29 → 85 → 89 → 145 → 42 → 20 → 4
14 → 17 → 50 → 25 → 29 → 85 → 89 → 145 → 42 → 20 → 4
例如快乐数7:
7 → 49 → 97→ 130 → 10 → 1
在十进位下,100以内的快乐数有(OEIS中的数列A00770) :1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100。

Python代码:

def isHappy(n):
    if n is None: return False

    while n != 1 and n != 4:
        nums = list(str(n))
        n = 0
        for i in nums:
            n += int(i) ** 2
    # 循环结束,返回结果
    if n == 1: return True
    if n == 4: return False
if __name__ == '__main__':
    print(isHappy(input()))

Python练习题——阶乘累计求和

题目来源:Python语言程序设计(中国大学MOOC)
授课老师:嵩天、黄天羽、礼欣
题目描述:
获得用户输入的整数n,输出 1!+2!+…+n!的值。
如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。
题目分析:
递归思想,关键在于基例和链条的观察。

Python代码

import sys
sys.setrecursionlimit(5000) #修改为5000
def delnum(n):
    if n == 1:
        return 1
    else:
        return n*delnum(n-1)
def getsum(k):
    sum = 0
    if k == 0:
        return 0
    else:
        for j in range(1, k+1):
            sum += delnum(j)
        return sum

if __name__ == '__main__':
    num_str = input()
    if num_str.isdigit():
        a = int(num_str)
        if a > 0:
            print(getsum(a))
        else:
            print('输入有误,请输入正整数')
    else:
        print('输入有误,请输入正整数')

Python练习题——成绩转换(百分制到五级制的转换)
题目描述:
成绩分数百分制转为五级制的判断输出(建议使用异常处理try-except-else-finally)。
具体要求如下:
1)输入一个[0-100]内成绩数据,输出相应等级(A、B、C、D、E),如输入为99,第一行输出为“输入成绩属于A级别。”;
2)当输入数据为其他字符或者超过范围,则输出“输入数据有误!”;
3)当成绩等级为A、B、C、D,则换行输出“祝贺你通过考试!”;
4)使用finally实现无论输入任何数据,均在最后输出“好好学习,天天向上!”
思路:
在问题描述里已经很清楚的给出了建议,首先写好异常处理框架,然后填写各部分就好,有一点要注意分数时包括整数和小数,例如99.9分。

python代码

if __name__ == '__main__':
    try:
        scroe = eval(input())
        if scroe >= 0 and scroe <= 100:
            if scroe >= 90:
                print('输入成绩属于A级别。')
            elif scroe >= 80:
                print('输入成绩属于B级别。')
            elif scroe >= 70:
                print('输入成绩属于C级别。')
            elif scroe >= 60:
                print('输入成绩属于D级别。')
            else:
                print('输入成绩属于E级别。')
        else:
            print('输入数据有误!')
    except:
        print('输入数据有误!')
    else:
        if scroe >= 60:
            print('祝贺你通过考试!')
    finally:
        print('好好学习,天天向上!')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值