Menu
CoddyTech

智能联系人管理器

本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 76 课,共 78 课。

challenge icon

挑战

中等

清理联系人列表。程序会读取一个整数 n,然后读取 n 行。每行代表一位联系人,包含姓名、电子邮件和电话号码,各项之间用逗号分隔(每行恰好有两个逗号)。

按顺序处理联系人:

  1. 将电子邮件转换为小写,并且只保留电话号码中的数字:(555) 123-4567 会变成 5551234567
  2. 如果电子邮件无效,则跳过该联系人:有效的电子邮件包含 @ 和 .,且不包含空格
  3. 如果电话号码不恰好包含 10 位数字,则跳过该联系人
  4. 如果之前保留的联系人有相同的电子邮件或相同的电话号码(清理后),则跳过该联系人

将每个保留的联系人单独打印一行:姓名、 | 、电子邮件、 | 和电话号码中的数字。最后,打印 Contacts kept: 、保留的联系人数量、 of 和 n。

对于以下输入:

3
John Doe,JOHN@email.com,123-456-7890
Jane Doe,jane@email.com,123.456.7890
Bob Smith,invalid.email,12345

输出为:

John Doe | john@email.com | 1234567890
Contacts kept: 1 of 3

Jane 会被跳过,因为她的电话号码与 John 的电话号码包含相同的数字;Bob 也会被跳过,因为他的电子邮件没有 @,而且电话号码太短。

亲手试试

extends Node

func _ready():
	var n := int(OS.read_string_from_stdin())
	# 读取 n 个联系人,清理后打印保留的联系人
	pass

逻辑与流程中的所有课

自己练习: GDScript 在线编译器