我目前正在努力将字符串分成两部分,同时使用空格作为拆分的基础。
我正在编写一个程序,在该程序中,人们应该输入其名字和姓氏作为字符串。然后程序应从名字中取出前三个字母,从名字中取出前三个字母。将它们放在一起,然后将它们附加到创建电子邮件的域名中。例如“姓氏”将变为[email protected]。我知道我只需使用两个输入即可轻松解决问题,但我希望它仅是一个输入。
def create_email_address():
name = input("Please input your first and last name: ")
domain = "@aperturescience.com"
email_address = str.lower(name[:3]) + str.lower(name[10:13]) + domain
print(str(email_address))
这是我到目前为止所拥有的,虽然我尝试使用列表拆分和索引进行了尝试,但仍无法正常工作。使用我自己的名称作为示例名称时,可以使索引工作。但是,如果我输入的字符中包含的字符数量不相同,则不会达到我想要的效果。
我想用空格分隔姓氏和名字,以指示拆分的位置。这样,名称有多长短都无所谓,我总是可以在每个名称的前三个字母后进行索引。
这可能吗?如果是的话,有什么提示吗?
谢谢!
def create_email_address():
name = input("Please input your first and last name: ")
domain = "@aperturescience.com"
names=name.split()
email_address = str.lower(names[0][:3]) + str.lower(names[1][:3]) + domain
print(str(email_address))
上面的代码已被稍加修改以使用split-假定它由空格分隔,它将从您的输入字符串创建一个列表。
这样,名字有多长短,我总是可以在每个名字的前三个字母后进行索引。
在这种情况下,根本不需要分割name
字符串。即使用户在一行中输入名字和姓氏,给定的代码也有效,但仅当整个name
字符串的长度恰好是13的长度时>]。
这是应纠正的代码部分:
1]如果您不知道字符串的长度正好是13个字符,则不能使用name[10:13]
从姓氏中获取最后3个字符。请改用name[-3:]
。否则,该程序仅在输入长度为13的字符串时才起作用。
2)最好使用name[:3].lower()
代替str.lower(name[:3])
,尽管两种情况下代码都可以正常工作。
3)不应使用print(str(...))
,因为即使您未明确指定,print
也会将结果转换为字符串。
所以,这是完整的固定代码:
name = input("Please input your first and last name: ")
domain = "@aperturescience.com"
email_address = name[:3].lower() + name[-3:].lower() + domain
print(email_address)
您可以像这样使用str.split()
:
最好的方法之一是使用正则表达式。请参考以下示例。
虽然我们都在提供解决方案,但我只会给您一个不好的答案。一个衬里: