第5章 函数和代码复用

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

#0501
def isNum(str1):
    try:
        a = eval(str1)
        b = a/2#排除元组等类型
    except:
        return False
    return True

str1 = input()
print(isNum(str1))

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

#0502
def isPrime(n):
    count = 0#计数因子个数
    try:
        a = eval(n)
        c = bin(a)#排除复数/元组/浮点数等类型
    except:
        return '请输入整数!'   
    if a < 2:
        return False
    else:
        for i in range(1,a+1):
            if a%i == 0:
                count += 1
        if count == 2:
            return True
        else:
            return False

while True:
    n = input('请输入整数(按Q或q退出):')
    if n == 'Q' or n == 'q':
        break
    print("是否是质数(True/False):{}".format(isPrime(n)))

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

#0503
def countNum(str1):
    n1,n2,n3,n4 = 0,0,0,0
    for c in str1:
#中文的汉字会被 isalpha 判定为 True,
#如果想区分中文和英文可以使用 unicode。中文的范围为:['/u4e00','/u9fa5']
        if c.encode('UTF-8').isalpha():
            n1 += 1
        elif c.isdigit():
            n2 += 1
        elif c.isspace():
            n3 += 1
        else:
            n4 += 1
    print("字母数:{} 数字数:{} 空格数:{} 其他字符数:{}"\
          .format(n1,n2,n3,n4))

str1 = input()
countNum(str1)

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

#0504
def allPrime(n):
    if n < 2:
        print(None)
    else:
        for i in range(2,n+1):
            count = 0
            for j in range(1,i+1):
                if i%j == 0:
                    count += 1
            if count == 2:
                print(i,end=' ')

allPrime(200)

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

#0505
def nFibonacci(n):
    a,b = 0,1
    count = 2
    nl = [0,1]
    while count < n:
        a,b = b,a+b
        nl.append(b)
        count += 1
    print(nl)
    return nl[n-1]

n = eval(input("请输入整数n:"))
print("第{}个数为:{}".format(n,nFibonacci(n)))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值