python初学者练习题(三)

1、编写一个程序找出两个单词之间的共同字母。

定义函数common_letters(),它接受两个参数:word1word2
该函数应返回一个包含word1word2之间均出现的字母的组成的字符串。
返回的字符串中的字母应为小写并按字母顺序排序。如果没有相同的字母,则返回一个空字符串。
def common_letters(word1, word2):
    w1 = set(word1)
    w2 = set(word2)
    s = ""
    for i in w1:
        for j in w2:
            if j == i:
                s = "".join(j) + s
    l = list(s)
    l.sort()
    s = "".join(l)
    return s
                
# 输入两个单词
word1 = input()
word2 = input()

# 调用函数, 并打印结果
print(common_letters(word1, word2))
2、编写一个程序来提取嵌套元组中的唯一元素。
例如,在嵌套元组((1,2,3),(2,4,6),(2,3,5))中,2重复出现了3次,3重复出现了2次,但我们的输出列表只会包含2、3一次。
即:[1, 2, 3, 4, 5, 6]
定义函数get_unique_elements(),函数接受一个参数 - 一个包含三个元组的嵌套元组。
在函数内,提取所有元组中的独立元素,确保不重复提取元素。
以列表的形式返回唯一的元素,并从小到大排序。
【思路:只有集合中不允许出现重复的值,先创建一个空集合,在遍历这个元组,再将每一个元组转换成集合(即去除重复元素)再添加到新的集合中,最后将整个集合转换成列表并进行排序】
def get_unique_elements(nested_tuples):
    unique_elements = set()
    for tup in nested_tuples:
        unique_elements.update(set(tup))
    return sorted(list(unique_elements))

# 初始化嵌套元组
nested_tuples = []

# 获取用户输入
for _ in range(3):
    tuple_elements = tuple(map(int, input().split()))
    nested_tuples.append(tuple_elements)

# 调用函数
print(get_unique_elements(nested_tuples))

3、编写一个程序来计算两个给定单词之间相同字符的数量。

需要考虑字符是区分大小写的(即a和A是不同的字符)。

例如,单词cookie和cool有两个字符相同:c和o。因此,输出应该是2。

另一方面,单词Blow和beer没有相同的字符,因为B和b视为不同的字符。

定义函数shared_chars_count(),有两个参数:word1word2

该函数应返回两个单词中相同字母的数量。

【思路:单词中存在两个相同的字母,只计算其中的一个的时候,就要想到集合操作,转换成集合,可以去除相同的元素,再计算两个字符的交集,就是相同字符,最后返回长度即可。】

def shared_chars_count(word1, word2):
    set1 = set(word1)
    set2 = set(word2)
    shared_chars = set1 & set2
    return len(shared_chars)
            
# 获取输入
word1 = input()
word2 = input()

# 调用函数
print(shared_chars_count(word1, word2))

 4、编写一个程序,计算句子中每个单词中某个字符出现的次数。

注意: 我们将英文字母的大小写当作同一个字符。例如,如果一个单词中同时包含S和s,那么它们都将被计为同一个字母s的出现次数。

定义函数count_char_occurrences(),有两个参数:sentence(句子)和char(字符)。

在函数内部,将sentence转换为小写。

返回一个列表,包含char在句子的每个单词中出现的次数

示例输入:She sells sea shells by the seashore.  s

示例输出:[1, 2, 1, 2, 0, 0, 2]

【思路:先将所有的单词全部转换成小写,再将句子中的每个单词进行遍历和判断】

def count_char_occurrences(sentence, char):
    sentence = sentence.lower() # 将句子转换为小写
    result = [] # 存储每个单词中char出现的次数
    for word in sentence.split(): # 遍历每个单词
        count = 0 # 记录char出现的次数
        for c in word: # 遍历单词中的每个字符
            if c == char: # 如果字符与char相同
                count += 1 # char出现的次数加1
        result.append(count) # 将char出现的次数添加到结果列表中
    return result

# 获取输入 
sentence_input = input()
char_input = input()

# 调用函数 
print(count_char_occurrences(sentence_input, char_input))

5、编写一个程序,在单词中的每个大写字母前添加空格,然后将字符串中的每个字符转换为小写。

定义函数add_space_before_capital(),它接受一个参数word。 在函数中,在字符串的每个大写字母前添加空格,并转为小写字符串后返回。

示例输入 myNewComputer 示例输出 my new computer

【在代码中,尝试通过将单词按空格拆分为列表来处理每个大写字母之前的空格。 然而,这种方法是不正确的。需要在每个大写字母前插入一个空格,而不是将单词拆分成列表

def add_space_before_capital(word):
    new_word = ""
    for i in word:
        if i.isupper():#判断是否为大写,并将其转换成小写
            new_word =new_word +  " " + i.lower()
        else:
            new_word =new_word +  i.lower()
    return new_word
# 获取用户输入
word = input()

# 调用函数
print(add_space_before_capital(word))

6、编写一个程序,按照每个单词的最后一个字母对句子进行排序。

定义函数sort_by_last_char(),参数为sentence(表示句子)。在函数内部,返回按照每个单词最后一个字母排序的句子。
示例输入:i love python programming
示例输出:love programming i python
def sort_by_last_char(sentence):
     s = sentence.split()
     s.sort(key=lambda x: x[-1]) # 按照每个单词的最后一个字母排序
     return ' '.join(s) # 将排序后的单词列表合并成字符串,使用空格分隔

# 输入句子 
sentence = input()

# 调用函数 
print(sort_by_last_char(sentence))

猜你喜欢

转载自blog.csdn.net/qq_69424518/article/details/134319046