小E学Python PART1 NCRE二级_习题五

小E学Python PART1 NCRE二级_习题五


(第一篇居然是习题五->因为写1-4的时候没想到自己准备以这本书打开我的博客,还没搬上来)
写的都很繁琐而且可能有BUG,要继续修修补补,望各位不吝赐教:)

编程题

T1
实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False.

def isNum(str):
    try:
        a=eval(str)
        if (type(a)==int)|(type(a)==float)|(type(a)==complex):
            return True
        else:
            return False
    except:
        return False
        
str=input()
print(isNum(str))

这道题居然卡住了一小会儿,脑回路阻塞在复数怎么判断上:( 非常感谢张同学给我这只小笨蛋的帮助↓

https://blog.csdn.net/weixin_43886356/article/details/86674160

总结:
复数怎么判断:复数的类型为complex,用type()判断

T2
实现isPrime()函数,参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False.

def isPrime(a):
    k=0
    try:
        for i in range(2,int(a**0.5+1)):
            if (a%i==0):
                return False
                break
        return True
    except:
        print('error')

num=eval(input())
if num<=1:
    print(False)
elif num==2|num==3:
    print(True)
else:
    m=isPrime(num)
    print(m)

总结:
刚开始函数里面直接写成print(True),发现后边多了一个None,原来函数没有返回的时候会自动打印一个None。

T3
编写一个函数计算传入字符串中数字、字母、空格以及其他字符的个数。

def count(str):
    str=str.lower()
    num,alph,blank,other =0,0,0,0 
    length=len(str)
    for i in range(length):
        if ord(str[i]) in range(48,58):
            num+=1
        elif ord(str[i]) in range(65,98):
            alph+=1
        elif str[i]==' ':
            blank+=1
        else:
            other+=1
    return num,alph,blank,other
    
str=input('please enter a string:')
result=count(str)
print('{} number(s),{} alphbet(s),{} blank(s),{} other(s)'.format(result[0],result[1],result[2],result[3]))

总结:
用ord()得到ascll码进行字符类型判断。

T4
编写一个函数,打印200以内的所有素数,以空格分割。

def isPrime(a):
    k=0
    try:
        for i in range(2,int(a**0.5+1)):
            if (a%i==0):
                return False
                break
        return True
    except:
        print('error')

print('2 3',end=' ')
for i in range (4,201):
    m=isPrime(i)
    if m==True:
        print(i,end=' ')

总结:
看题的第一秒,脑子里想:素数是质数吗? 果然小学数学没学好
素数==质数!!
还偷懒了,直接拿第二题的代码改了一下(捂脸)
但是居然发现了第二题写的一个BUG,质数里居然打印出了121(捂脸)
检查发现我居然傻到用math.log(x,base) (捂脸)
我爱数学

T5
编写一个函数,参数为一个整数n。利用递归获取斐波那契数列中的第n个数并返回。

def f(a):
    if (a==1 )|( a==2):
        return 1
    for i in range(1,a-1):
        return f(a-i)+f(a-(i+1))
        
num=eval(input('please enter an integer:'))
print('The fibonacci number is {} '.format(f(num)))

总结:
果然不论什么语言,斐波那契数列大大总是会来的:)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值