单词最后字母排序

要求:

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

  • 定义函数sort_by_last_char(),参数为sentence(表示句子)。
  • 在函数内部,返回按照每个单词最后一个字母排序的句子。

示例输入

i love python programming

示例输出

love programming i python

代码:

def sort_by_last_char(sentence):
     # 利用lambal表达式 
     ss = sentence.split(" ") #取出每一个单词
     sorted_sentence = " ".join(sorted(ss,key = lambda x: x[-1]))
     return sorted_sentence
# 输入句子 
sentence = input()

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

注意:

关于lamdba的简单介绍:

在 Python 中,lambda 表达式是一种简洁的函数定义方式,也称为匿名函数。lambda 表达式通常用于需要一个简单函数的地方,并且不需要为该函数命名

举例:

# 计算两个数的和
add = lambda x, y: x + y
print(add(2, 3))  # 输出 5

# 判断一个数是否为偶数
is_even = lambda num: num % 2 == 0
print(is_even(4))  # 输出 True

# 对列表进行排序
numbers = [5, 2, 8, 1, 7]
numbers.sort(key=lambda x: x % 2)
print(numbers)  # 输出 [2, 8, 5, 1, 7]

在第一个示例中,我们定义了一个 lambda 表达式 add,它接受两个参数 xy,返回它们的和。

在第二个示例中,我们定义了一个 lambda 表达式 is_even,它接受一个参数 num,判断该数是否为偶数。

在第三个示例中,我们使用 lambda 表达式作为 sort() 方法的 key 参数,根据数字的奇偶性对列表进行排序。

 

 

在C语言中,如果你需要对字符串数组按照单词的首字母进行排序,通常我们会先将整个字符串分割成单个单词,然后比较每个单词的首字母。这涉及到字符串处理函数如`strtok()`用于分割,以及字符数组比较。以下是一个简单的步骤: 1. 定义一个辅助函数,比如`strcmp_words()`, 使用`strcasecmp()`进行大小写不敏感的比较,因为`strtok()`默认会忽略大小写。 ```c int strcmp_words(const char *word1, const char *word2) { return strcasecmp(word1, word2); } ``` 2. 创建一个结构体,包含指向字符串的指针和一个表示是否已排序的标志,用于链式存储和排序。 ```c typedef struct { char *word; int is_sorted; } Word; Word words[arraysize]; ``` 3. 使用`strtok()`逐个读取单词并添加到结构体数组中。 ```c char *current_word = "your_string_to_sort"; // 或从用户输入获取 while (current_word != NULL) { words[index].word = current_word; words[index].is_sorted = 0; // 初始设置为未排序 index++; current_word = strtok(NULL, " "); } ``` 4. 对数组进行冒泡排序,如果两个相邻的单词字母不同,则交换它们的位置,直到数组完全有序。 ```c for (int i = 0; i < arraysize - 1; i++) { for (int j = 0; j < arraysize - 1 - i; j++) { if (!words[j].is_sorted && !words[j + 1].is_sorted && strcmp_words(words[j].word, words[j + 1].word) > 0) { swap(&words[j], &words[j + 1]); words[j].is_sorted = words[j + 1].is_sorted = 1; } } } ``` 5. 最终,你可以遍历排序后的数组打印出单词
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值