CheckIO是一个通过闯关游戏学习编程的网站(Python和JavaScript)。通过解题开发新“岛屿”,同时,通过做任务获得Quest Points解锁会员题目。
文章内容:题目、我自己的思路和代码以及优秀代码,如果想看大神解题可以直接跳到“优秀代码”部分。
本题链接:https://py.checkio.org/en/mission/first-word/
题目
给定一个字符串,找到其第一个单词。
注意以下几点:
- 字符串中可以包含点和逗号
- 字符串可以以字母或点或空格开头
- 一个单词可以包含一个撇号,它是一个单词的一部分
- 整个文本可以只包含一个单词
输入: 字符串
输出: 字符串
举个栗子:
first_word("Hello world") == "Hello"
first_word("greetings, friends") == "greetings"
应用场景:the first word is a command in a command line
假设:文本中可以包含:a-z A-Z , . ’
难度: Elementary+
题目框架
def first_word(text: str) -> str:
# your code here
return ''
if __name__ == '__main__':
print("Example:")
print(first_word("Hello world"))
# These "asserts" are used for self-checking and not for an auto-testing
assert first_word("Hello world") == "Hello"
assert first_word(" a word ") == "a"
assert first_word("don't touch it") == "don't"
assert first_word("greetings, friends") == "greetings"
assert first_word("... and so on ...") == "and"
assert first_word("hi") == "hi"
assert first_word("Hello.World") == "Hello"
print("Coding complete? Click 'Check' to earn cool rewards!")
思路及代码
思路
- 使用正则表达式进行匹配
- 然后使用.group()输出结果
代码
def first_word(text: str) -> str:
import re
a = re.search('[a-zA-Z]*\'?[a-zA-Z]+?', text)
return a.group()
优秀代码
No.1
def first_word(text: str) -> str:
import re
return re.search("[a-zA-Z']+", text).group()
或:
def first_word(text: str) -> str:
import re
return re.search("[\w']+", text).group(1)
No.2
def first_word(text: str) -> str:
text = text.replace('.', ' ').replace(',', ' ').strip()
return text.split()[0]