Python中如何实现单词排序的练习?
题目如下
Exercise 5. Write a program words.py. The program should repeatedly ask the user to enter a word, one at a time, until they enter done (which does not count as an entered word). At that point, the program should print: [first] comes first in the dictionary [last] comes last in the dictionary with [first] and [last] replaced with entered words which would come first and last when sorted alphabetically. You can assume all words entered are lower-case, and don’t contain non-alphabetic characters. You can also assume that the user will always give at least one word (different than done). An example session might look as follows: Enter a word: foo Enter a word: bar Enter a word: baz Enter a word: zoo Enter a word: boo Enter a word: done bar comes first in the dictionary zoo comes last in the dictionary
我自己弄了一个, i='a' j='z' while True: x=input('Enter a word: ') if x =='done': break if str(x)>=i: i=x continue if str(x)<j: j=x continue print(j, 'comes first in the dictionary') print(i, 'comes last in the ditionary')
但是这有个问题,就是只输入一个单词的时候就废了。。。 有没有大佬出来指点一下?给点思路。。。但是不要用太高级的,我目前只学到 flow control,这是老师留的作业题,太高级的我也不会用
Python中如何实现单词排序的练习?
把用户输入的词放到一个 list 里面,然后在输出的时候先把 list 排序,然后输出第一个和最后一个
def sort_words(text):
"""
对输入文本中的单词进行排序
参数:
text: 包含单词的字符串
返回:
排序后的单词列表
"""
# 1. 将文本拆分为单词列表
words = text.split()
# 2. 清理单词(可选):移除标点,转换为小写
cleaned_words = []
for word in words:
# 移除常见标点符号
clean_word = word.strip('.,!?;:"\'()[]{}')
# 转换为小写确保大小写不敏感排序
cleaned_words.append(clean_word.lower())
# 3. 对单词列表进行排序
# sorted()函数返回新列表,不改变原列表
sorted_words = sorted(cleaned_words)
return sorted_words
# 示例使用
if __name__ == "__main__":
# 测试用例1:基本排序
sample_text = "banana apple cherry date"
result = sort_words(sample_text)
print(f"原始文本: {sample_text}")
print(f"排序结果: {result}")
# 输出: ['apple', 'banana', 'cherry', 'date']
# 测试用例2:包含标点和大小写
sample_text2 = "Python is great! I love programming."
result2 = sort_words(sample_text2)
print(f"\n原始文本: {sample_text2}")
print(f"排序结果: {result2}")
# 输出: ['great', 'i', 'is', 'love', 'programming', 'python']
# 测试用例3:自定义排序规则
# 按单词长度排序
text = "short longer longest medium"
words = text.split()
sorted_by_length = sorted(words, key=len)
print(f"\n按长度排序: {sorted_by_length}")
# 输出: ['short', 'longer', 'medium', 'longest']
# 测试用例4:保留原始大小写(如果需要)
def sort_words_case_sensitive(text):
words = text.split()
return sorted(words)
sample = "Apple banana apple Banana"
print(f"\n区分大小写排序: {sort_words_case_sensitive(sample)}")
# 输出: ['Apple', 'Banana', 'apple', 'banana']
这个实现的核心是:
- 用
split()分割字符串得到单词列表 - 用
sorted()对列表排序(默认按字母顺序) - 可选清理步骤处理标点和大小写问题
要按不同规则排序,可以修改sorted()的key参数,比如key=len按长度排序。
总结:用split加sorted就能搞定基本单词排序。
或者直接把你这段代码后面的两个 continue 去掉不就好了…
list 不能用,还没学到,用了评分过不了。continue 这个应该没问题吧。。。现在这个程序关键是只输入一个单词的时候会出问题
只输入一个单词的时候 last word 一定是 z 对吧?
因为你只输入一个单词的时候一定不会运行最后一个判断,你需要把倒数第二个 continue 删掉,无论前一个条件是真是假都应该判断这个单词是不是出现在单词表最后的单词
感谢感谢,是这个道理,搞定了😅

