我需要一些帮助,我确定当这个问题得到解答时,我会想到这一点非常简单。但这是:
我试图获取此代码:
forename = [input("Forename: ")]
forenameFirstLetter = forename[0]
email = str(forenameFirstLetter) + "." + surname + "@TreeRoad.net"
print ("This is the students email address:" + email)
打印:
J.Smith@TreeRoad.net
相反,我收到此错误:TypeError: Can't convert 'list' object to str implicitly
那么如何将forename放入列表中,这样我就可以打印第一个字母,然后再打印成一个字符串,这样我就可以将它添加到其他字符串中了?
答案 0 :(得分:4)
您要做的是创建一个列表,其中唯一的元素是字符串。当它是一个列表时,forename[0]
将获取该列表的第一个(也是唯一的)元素(只是字符串,就好像它是直接从input()
获取的那样),而不是来自字符串。
没有必要将其转换为列表,切片表示法允许使用:
forename = input("Forename: ")
forenameFirstLetter = forename[0]
所以,现在不需要以后转换为字符串:
email = forenameFirstLetter + "." + surname + "@TreeRoad.net"
print ("This is the students email address:" + email)
0 | 1 | 2 | 3 | (index)
f | o | o | . | (string)
切片时:
s = "foo."
s[0] #is "f" because it corresponds with the index 0
s[1] #is "o"
s[2] #is "o"
s[0:2] #takes the substring from the index 0 to 2. In this example: "foo"
s[:1] #From the start of the string until reaching the index 1. "fo"
s[2:] #From 2 to the end, "o."
s[::2] #This is the step, here we are taking a substring with even index.
s[1:2:3] #You can put all three together
所以语法为string[start:end:step]
。
用于列表非常相似。
答案 1 :(得分:2)
这是因为您正在尝试将字符串转换为列表,您只需将字符串切片。
更改此行:
forename = [input("Forename: ")]
到
forename = input("Forename: ")
通过执行此操作,您将获得字符串的第一个字母。我建议阅读有关字符串切片的this文章以了解更多信息。
答案 2 :(得分:0)
您需要的是:
email = '%s.%s@TreeRoad.net' % (forename[0], surname)
您还可以使用更简单的方法来读取字符串格式:
InitialContext
答案 3 :(得分:-1)
不要在列表中取输入字符串作为输入并在其上应用拆分功能,它将被转换为列表。