Python--17. 习题

5.2 编写函数,判断一个整数是否为素数,并编写主程序调用该函数

def func(n):
    for i in range(2,n):
        if n % i == 0:
            print('{}不是素数'.format(n))
            break
    else:
        print('{0}是素数'.format(n))
func(791)
791不是素数

5.3 编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果

  • 方法一:
def func(n):
    re = [0,0,0,0]
    for i in n:
        if i.isupper():
            re[0] = re[0] + 1
        elif i.islower():
            re[1] = re[1] + 1
        elif i.isdigit():
            re[2] = re[2] + 1
        else:
            re[3] = re[3] + 1
    return tuple(re)
func('Abc123!@#$')
(1, 2, 3, 4)
  • 方法二:
def demo(v):
    capital = little = digit = other =0
    for i in v:
        if 'A'<=i<='Z':
            capital+=1
        elif 'a'<=i<='z':
            little+=1
        elif '0'<=i<='9':
            digit+=1
        else:
            other+=1
    return (capital,little,digit,other)

x = 'capital = little = digit = other =0'
print(demo(x))
(0, 23, 1, 11)

5.6 在Python程序中,局部变量会隐藏同名的全局变量吗?用代码验证

#会
def demo():
    a = 3
    print(a)
a = 5
demo()
print(a)
3
5

5.8 编写函数,可以接受任意多个整数并输出其中的最大值和所有整数之和

def func(*p):
    print(max(p))
    print(sum(p))
func(1,2,3)
3
6

5.9 编写函数,模拟内置函数sum()。

def Sumfunc(n):
    s = 0
    for i in n:
        s = s + i
    return s
print(Sumfunc([1,2,3]))
print(Sumfunc((1,2,3)))
6
6

*5.11 编写函数,模拟内置函数sorted()。

help(sorted)
Help on built-in function sorted in module builtins:

sorted(iterable, /, *, key=None, reverse=False)
    Return a new list containing all items from the iterable in ascending order.
    
    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.
from random import randint

def mySorted(lst, reverse=False):
    lst = lst[:]
    length = len(lst)
    for i in range(0, length):
        flag = False
        for j in range(0, length-i-1):
            #比较相邻两个元素大小,并根据需要进行交换
            #默认升序排序
            exp = 'lst[j] > lst[j+1]'
            #如果reverse=True则降序排序
            if reverse:
                exp = 'lst[j] < lst[j+1]'
            if eval(exp):
                lst[j], lst[j+1] = lst[j+1], lst[j]
                #flag=True表示本次扫描发生过元素交换
                flag = True
        #如果一次扫描结束后,没有发生过元素交换,说明已经按序排列
        if not flag:
            break
    return lst

lst = [randint(1, 100) for i in range(20)]
print('Before sorted:\n', lst)
print('After sorted:\n', mySorted(lst, True))
Before sorted:
 [35, 68, 79, 19, 53, 19, 4, 9, 34, 67, 55, 12, 21, 90, 87, 89, 81, 51, 89, 27]
After sorted:
 [90, 89, 89, 87, 81, 79, 68, 67, 55, 53, 51, 35, 34, 27, 21, 19, 19, 12, 9, 4]
  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值