python练习

def findMinAndMax(L):
    if L ==[]:
        return (None,None)
    Max=L[0]
    Min=L[0]
    for x in L:
        if x > Max:
            Max=x
        if x < Min:
            Min=x
    return (Min,Max)

# 测试
if findMinAndMax([]) != (None, None):
    print('测试失败!')
elif findMinAndMax([7]) != (7, 7):
    print('测试失败!')
elif findMinAndMax([7, 1]) != (1, 7):
    print('测试失败!')
elif findMinAndMax([7, 1, 3, 9, 5]) != (1, 9):
    print('测试失败!')
else:
    print('测试成功!')



L1 = ['Hello', 'World', 18, 'Apple', None]
L1 = [ s.lower() for s in L1 if isinstance(s,str)]
print(L1)

def triangles():
    L0 = [1]
    L1 = [1]
    while True:
        yield L1
        L1=[1]
        if L0 != [1]:
            for i in range(1,len(L0)):
                L1.append(L0[i]+L0[i-1])
        L1.append(1)
        L0=L1
    pass
    return 'done'

n = 0
results = []
for t in triangles():
    print(t)
    results.append(t)
    n = n + 1
    if n == 10:
        break
if results == [
    [1],
    [1, 1],
    [1, 2, 1],
    [1, 3, 3, 1],
    [1, 4, 6, 4, 1],
    [1, 5, 10, 10, 5, 1],
    [1, 6, 15, 20, 15, 6, 1],
    [1, 7, 21, 35, 35, 21, 7, 1],
    [1, 8, 28, 56, 70, 56, 28, 8, 1],
    [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
]:
    print('测试通过!')
else:
    print('测试失败!')
from functools import reduce

def normalize(name):
    ans = str(name[:1]).upper()
    ans += str(name[1:]).lower()
    return  ans

# 测试:
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)



from functools import reduce

def mul(x,y):
    return x * y

def prod(L):
    return reduce(mul,L)

print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))
if prod([3, 5, 7, 9]) == 945:
    print('测试成功!')
else:
    print('测试失败!')

from functools import reduce
digit = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,
         '6':6,'7':7,'8':8,'9':9}

def c2n(c):
    return digit[c]

def integer(x,y):
    return x * 10 + y

def decimal(x,y):
    return x * 0.1 + y

def str2float(s):
    i = str(s).index('.')
    s1 = s[:i]
    s2 = reversed(s[-i:])
    return reduce(integer,map(c2n,s1)) + reduce(decimal,map(c2n,s2)) * 0.1
#测试
print('str2float(\'123.456\') =', str2float('123.456'))
if abs(str2float('123.456') - 123.456) < 0.00001:
    print('测试成功!')
else:
    print('测试失败!')





def _odd_iter():
    n = 1
    while True:
        n = n + 2
        yield n


def _not_divisible(n):
    return lambda x: x % n > 0


def primes():
    yield 2
    it = _odd_iter() # 初始序列
    while True:
        n = next(it) # 返回序列的第一个数
        yield n
        it = filter(_not_divisible(n), it) # 构造新序列


# 打印1000以内的素数:
for n in primes():
    if n < 1000:
        print(n)
    else:
        break



def is_palindrome(n):
    t = n
    r = 0
    while t > 0:
        r = r * 10 +t%10
        t//=10
    return r == n


# 测试:
output = filter(is_palindrome, range(1, 1000))
print('1~1000:', list(output))
if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]:
    print('测试成功!')
else:
    print('测试失败!')

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
    x,y = t
    return x

def by_score(t):
    x,y = t
    return - y
def by_score_name(t):
    return t[1],t[0]

L2 = sorted(L, key=by_name)print(L2)L2 = sorted(L, key=by_score)print(L2)

L2 = sorted(L, key=by_score_name)
print(L2)


def createCounter():
    def g():
        n = 0
        while True:
            n += 1
            yield n
    num =  g()#只有显示调用函数才可以生成一个generator对象
    def counter():
        return next(num)
    return counter

def createCounter():
    l = [0]#列表是全局变量
    def counter():
        l[0]+=1
        return l[0]
    return counter

# 测试:
counterA = createCounter()
print(counterA(), counterA(), counterA(), counterA(), counterA()) # 1 2 3 4 5
counterB = createCounter()
if [counterB(), counterB(), counterB(), counterB()] == [1, 2, 3, 4]:
    print('测试通过!')
else:
    print('测试失败!')
















Python 练习题是指设计用来提高编程技能和加深对Python语言理解的编程问题。这些练习题通常涉及不同的Python编程概念和技巧,从基础语法到高级主题都有涵盖。以下是一些常见的Python练习题类型: 1. 基础语法练习:这些练习帮助初学者熟悉Python的基本语法,比如变量声明、数据类型、控制结构(if-else语句、循环)以及函数定义等。 2. 数据结构操作:涉及Python内置的数据结构,如列表(list)、字典(dict)、元组(tuple)和集合(set)的操作练习,包括增删改查等。 3. 面向对象编程:包含类和对象的定义、继承、多态和封装等面向对象编程概念的实践题目。 4. 错误和异常处理:学习如何处理在代码执行过程中可能遇到的错误和异常。 5. 文件操作:练习如何在Python中读写文件,包括文本文件和二进制文件的操作。 6. 模块和包:学习如何导入和使用Python标准库中的模块,以及如何创建和使用自定义包。 7. 高级特性:练习Python的高级特性,比如列表推导式、生成器、装饰器和上下文管理器等。 8. 数据处理:包含使用Python进行数据分析和处理的练习,如使用Pandas库操作数据框(DataFrame)。 9. Web开发基础:涉及使用Flask或Django等框架进行简单的Web应用开发。 10. 测试:编写单元测试来验证代码的正确性。 通过解决这些问题,可以系统地提升Python编程技能,并在实际开发中更加得心应手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值