《练习100》96~100

题目96

# 质量平衡的字符串
# a-z 对应1-26, 给定一个纯小写字母的字符串,将该字符串从中间分开,得到两个长度相等的字符串,若两个字符串之和相等
# 则打印 相等,不相等打印相等。
# 注意事项: 长度为奇数的字符串,中间的字符将被忽略

# 看到字母和数字对应的关系,直接就往ASCII上想 a的ASCII码是97
str1 = input('请输入字符串:')
if sum(ord(x) - 96 for x in str1[: len(str1) // 2]) == sum(ord(x) -96 for x in str1[-(len(str1) // 2):]):
    print('相等')
else:
    print('不相等')
    

# 写这道题的原因是,发现了取一半元素的新方法str[-(length//2):]

# 首先str[start:end:step]当start为负的时候,自动将end调整为-1,step调整为-1
str1 = 'abbba'
str2 = 'abba'
len1 = len(str1)//2
len2 = len(str2)//2
print(str1[:len1])
print(str2[:len2])
print(str1[-len1:])
print(str2[-len2:])

题目97

# 汉明距离指的是两个字符串在对应位置不同字母的个数,例如:“abcd”和“abce”的汉明距离为1
# 第一点: 两个字符串的长度不一致的时候,怎么算?(目前以短的那个为准)
# 第一反应是整个for循环比较

def get_distance(str1,str2):
    return sum(str1[i] != str2[i] for i in range(min(len(str1), len(str2))))

str1 = 'abce'
str2 = 'abcd'
print(get_distance(str1,str2))

# 优化一下: 两个字符串一起操作,自动以长度小的那个为准。 应该想到zip
def get_distance1(str1,str2):
    return sum(x != y for (x,y) in zip(str1,str2))

print([x != y for (x,y) in zip(str1,str2)])
print(get_distance1(str1,str2))

# 小知识点: False = 0, True = 1

题目98

# 写一个匿名函数,返回两个数中大的那个
# 目前已经学过的匿名函数就只有lambda
# lambda的格式为
# func = lambda [参数列表] : 表达式

# 如何在表达式中判断两个数的大小:
# 我想要用的是:
# if x > y:
#     return x
# else:
#     return y
# 正好上述语句可以简化为: x if x > y else y 从语句变成了表达式,那么我们就可以将其用在lambda表达式处了

func = lambda x,y : x if x > y else y

print(func(10,20))

# 以下是参考答案的用法,解析一下
MAX = lambda x,y: (x > y) *x + (x < y) * y
print(MAX(10,20))

# 解析 False=0,True=1
print(True*10)  #10
print(False*10) # 0
# 当x>y的时候: (x>y)*x + ( x 1*x+0*y -->x
# 当xy)*x + ( x 0*x+1*y -->y
# 当x=y的时候:(x>y)*x + ( x 0*x+0*y -->0
# 所以答案有缺陷,我们看看max(10,10)其值是10,而答案的MAX(10,10)为0,这是一个不在备选项中的值(也可以解释为没有最大)
# 参考max()的功能,可以适当修改一下答案的表达式
MAX1 = lambda x,y: (x >= y) *x + (x < y) * y
print(MAX1(10,20))

print(max(10,10))
print(MAX1(10,10))

# 知识点:通过表达式判断两个数的大小可以使用:(x >= y) *x + (x < y) * y

题目99

# 求和函数
# 函数可以接受任意多个整数,函数返回所有整数的平方和
def get_square_sum(*param):
    return sum(x**2 for x in param)

print(get_square_sum(1,2,3,4,5,6))

题目100

# 字典排序
# 假设有一个字典d={'a':24,'b':52,'c':12,'d':33},按字典的value排序
d={'a':24,'b':52,'c':12,'d':33}

# 这里用items,不用的话无法取得value
print(sorted(d.items(),key=lambda x: x[1]))


# dict.items()
# d.items() #返回包含(键值,实值)元组的列表

你可能感兴趣的:(Python学习笔记,python,开发语言,学习)