2017-03-04 2 views
2

Ich brauche Hilfe, und ich bin mir sicher, wenn das beantwortet wird, wird es ziemlich einfach sein, dass ich nicht daran gedacht habe. Aber hier ist es:Wie konvertiert man einen user_input in eine Liste?

Ich versuche, diesen Code zu erhalten:

forename = [input("Forename: ")] 
forenameFirstLetter = forename[0] 

email = str(forenameFirstLetter) + "." + surname + "@TreeRoad.net" 
print ("This is the students email address:" + email) 

zum ausdrucken:

[email protected] 

Stattdessen erhalte ich diese Fehlermeldung: TypeError: Can't convert 'list' object to str implicitly

so wie würde ich über den Vornamen in eine Liste gehen, damit ich den ersten Buchstaben und dann zurück in eine Zeichenkette drucken kann, also kann ich es zu anderer Zeichenkette hinzufügen?

Antwort

4

Was du falsch gemacht hast:

Was Sie wo versucht, eine Liste, deren einziges Element war eine Zeichenfolge zu tun war, zu schaffen. Wenn es eine Liste ist, nimmt forename[0] das erste (und einzige) Element dieser Liste (nur die Zeichenfolge, als ob sie direkt aus input() entnommen wurde), aber nicht aus der Zeichenfolge.


Wie es beheben:

Es ist nicht notwendig, es zu konvertieren aufzulisten, ermöglicht Slice-Notation zu verwenden:

forename = input("Forename: ") 
forenameFirstLetter = forename[0] 

So, jetzt ist es nicht erforderlich, Zeichenfolge zu konvertieren später:

email = forenameFirstLetter + "." + surname + "@TreeRoad.net" 
print ("This is the students email address:" + email) 

Um u nderstand besser schneiden Saiten:

0 | 1 | 2 | 3 | (index) 
f | o | o | . | (string) 

Wenn Sie eine Zeichenfolge in Scheiben schneiden:

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 

So ist die Syntax string[start:end:step].

Für die Verwendung in Listen ist sehr ähnlich.

+1

Vielen Dank –

0

Was Sie brauchen, ist:

forename = input('Forename: ') 
surname = input('Surname: ') 

email = forename[0] + "." + surname + "@TreeRoad.net" 
print ("This is the students email address:" + email) 

Sie auch einfacher verwenden können String-Formatierung zu lesen:

email = '%s.%[email protected]' % (forename[0], surname) 
+1

Es wurde mit Python 3.x markiert, so dass 'raw_input' nicht existiert ... und wenn sie 2.x benutzen würden, würde ihre' input' eine andere Ausnahme als die eine verursachen gegeben ... –

+0

Mein schlechtes, bemerkte nicht, dass es in Bezug auf Python3 ist. Jetzt korrigiert. –

+0

Gibt es einen Grund für die Formatierung der Zeichenfolge im alten Stil? Kann 'email = '{0 [0]}. {1}' verwenden. Format (Vorname, Nachname)' ... und im Ausdruck, da es sich um eine Funktion handelt, verwende einfach: 'print ('Dies ist die E-Mail-Adresse des Schülers Adresse: ', email) '(zB: keine Notwendigkeit für die String-Verkettung) –

-1

Nehmen Sie keine Eingabe in der Liste nehmen Zeichenkette als Eingabe und Split-Funktion anwenden auf es und es wird in Liste umgewandelt werden.

+0

bitte erarbeiten oder es wird keine Upvotes anziehen. – Gang

Verwandte Themen