如何将user_input转换为列表?

时间:2017-03-04 13:25:31

标签: python python-3.x

我需要一些帮助,我确定当这个问题得到解答时,我会想到这一点非常简单。但这是:

我试图获取此代码:

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放入列表中,这样我就可以打印第一个字母,然后再打印成一个字符串,这样我就可以将它添加到其他字符串中了?

4 个答案:

答案 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)

不要在列表中取输入字符串作为输入并在其上应用拆分功能,它将被转换为列表。