Snažím sa previesť prvé písmeno každého slova reťazca na veľké písmená v pythone. Ale stále sa dostávam generator object at 0x10315b8>
žiadny príspevok predtým, ako sa zdá, že odpovedá na moju otázku.
def capitalize(str):
newstr = str.split(" ")
newlist = []
for word in newstr:
if word[0][0] == word[0][0].upper():
newlist.append(word[0][0].upper())
newlist.append(word[0][1:])
newlist.append(" ")
convert_first = (str(w) for w in newlist)
print(convert_first)
capitalize(input("enter some string"))#calling the function
odpovede:
1 pre odpoveď č. 1Váš problém spočíva v tom, ako sa snažíte vytvoriť reťazec zo zoznamu reťazcov. Opakom "rozdelenia" reťazca do zoznamu je "spojenie" zoznamu do reťazca.
def capitalize(str):
newstr = str.split(" ")
newlist = []
for word in newstr:
newlist.append(word[0].upper() + word[1:])
convert_first = " ".join(newlist)
print(convert_first)
capitalize(input("enter some string"))#calling the function
Poznámka: Pokúsil som sa, aby bol môj kód čo najbližší tomu, ktorý je v otázke.
Tiež, prečo je tam if
vyhlásenie vo vašom kóde? S tým na mieste si "re naozaj len zúžitkovať všetky slová, ktoré sú už kapitalizované a odhodiť zvyšok, pretože nikdy robiť to do newlist."
0 pre odpoveď č. 2
Existuje niekoľko problémov s vaším kódom:
Chybové hlásenie, ktoré ste dostali, je pre pokus o tlač
convert_first
, čo je generátor, nie reťazec.newstr
je zoznam slov, takžeword
je reťazec aword[0]
je už prvý znak. Nemá významword[0][0]
aleboword[0][1:]
.if word[0][0] == word[0][0].upper():
len filtruje všetky slová, ktorých prvý znak nie je veľkými písmenami ...
Takže jednoducho nejaký kód urobí to, čo ste opísali:
def capitalize(str):
newstr = str.split(" ")
newlist = []
for word in newstr:
newlist.append(word[0].upper())
newlist.append(word[1:])
newlist.append(" ")
convert_first = "".join(w for w in newlist)
print(convert_first)
capitalize(input("enter some string"))
Alebo tí, ktorí uprednostňujú krátky kód a výrazy generátora:
def capitalize(str):
print(" ".join(word[0].upper() + word[1:] for word in str.split(" ")))
capitalize(input("enter some string"))
To tiež odstraňuje medzeru v priestore vygenerovaného reťazca, ktorý môže byť (nie) tým, čo ste zamýšľali.