Python计算两个给定单词之间相同字符的数量
Python每日一练
文章目录
- Python每日一练
- 问题:
- 代码实现
- 示例输入:
- 示例输出:
- 总结
- 示例输出:
问题:
编写一个程序来计算两个给定单词之间相同字符的数量。
需要考虑字符是区分大小写的(即a和A是不同的字符)。
例如,单词cookie和cool有两个字符相同:c和o。因此,输出应该是2。
另一方面,单词Blow和beer没有相同的字符,因为B和b视为不同的字符。
定义函数shared_chars_count(),有两个参数:word1和word2。
该函数应返回两个单词中相同字母的数量。
考虑字符区分大小写。
一个相同字符计数一次。
题目来源:PythonTip
https://edu.py2fun.com/
代码实现
代码如下(示例):
def shared_chars_count(word1, word2):
# 此处编写代码
new_s1 = [] # 字符串去重
for char in word1:
if char not in new_s1:
new_s1.append(char) # 遍历字符串并加入非重复字符的列表
new_s1 = "".join(new_s1) # 转换为字符串
new_s2 = []
for char in word2:
if char not in new_s2:
new_s2.append(char)
new_s2 = "".join(new_s2)
count = 0 # 统计相同数字
for i in new_s1:
if i in new_s2:
count += 1
return count
# 获取输入
word1 = input()
word2 = input()
# 调用函数
print(shared_chars_count(word1, word2))
示例输入:
cookie
cool示例输出:
2
总结
根据题目的描述我们可以把这个问题拆分成两个部分来解决:
第一部分,题目要求相同字符只统计一次,而单词里难免会出现一个字母多次出现的情况,因此首先对输入的两个字符串各自完成去重操作;
第二部分,对完成去重的两个字符串进行统计比较相同字符即可。
这就是本次题目的解题思路。
这里我们再补充一点关于字符串去重的问题。代码中我们通过自定义方法完成对字符串的去重操作,当然我们也可以利用Python中的某些数据类型的特点解决这个问题,例如集合数据类型会自动去除重复元素,使用set()构造函数将字符串转换为集合,再将集合转换为字符串,同样也可完成字符串去重操作。
代码如下(示例):
s = "cookie"
new_s = list(set(s)) # 转换为集合再转换为列表
new_s = "".join(set(s)) # 转换为集合再转换为字符串
示例输出:
‘cokie’