List zonder brackets maar wel met single quotes

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • SamySam
  • Registratie: Oktober 2021
  • Laatst online: 29-10-2021
Mijn vraag
Ik moet een functie schrijven met één argument van het type string, deze functie zorgt ervoor dat de string gesorteerd wordt, dat is mij allemaal gelukt zoals u hieronder kunt zien, maar de uitvoer moet tussen aanhalingstekens (single quotes) maar wel zonder brackets.
Ik krijg de uitvoer maar niet tussen single quotes, iemand misschien een idee hoe ik dit kan oplossen?

Alvast bedankt,

Invoer:

def alfabet(arg):
a = arg.split()
a.sort()
a = print(*a)

return a

alfabet("Z V H B A")

Uitvoer: A B H V Z

Gewenste uitvoer: 'A B H V Z'

Alle reacties


Acties:
  • +1 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 13-05 14:23

DataGhost

iPL dev

Je begint inderdaad met een string maar je maakt er een list van, terwijl je output een string moet zijn. Je print-call print direct naar het scherm zonder iets te returnen dus a is leeg (None) aan het eind van je functie. Meestal bestaan conversiefuncties beide kanten op met wellicht een subtiel andere naam.

[ Voor 16% gewijzigd door DataGhost op 29-10-2021 11:33 ]


Acties:
  • 0 Henk 'm!

  • SamySam
  • Registratie: Oktober 2021
  • Laatst online: 29-10-2021
@DataGhost

a is niet leeg, ik heb het wel zonder return geprobeerd maar de uitvoer blijft hetzelfde:

invoer:

def alfabet(arg):
a = arg.split()
a.sort()
print(*a)

alfabet("Z V H B A")

uitvoer:
A B H V Z

Acties:
  • +2 Henk 'm!

  • Arie-
  • Registratie: December 2008
  • Niet online
Ik weet niet welke taal, maar ik denk dat je het concept 'escapen' wilt begrijpen. Je wilt mogelijk een teken afdrukken welke ook in de code gebruikt wordt als teken om een string begin en einde aan te geven. Voorbeeld:
Stel de in je programmeertaal begin en eindig je een stuk tekst met
code:
1
"
(dubbele quotes), alles daar tussen is onderdeel van die string, de dubbele quotes zelf niet. Als je nu een dubbele quote wilt afdrukken, moet je die dubbele quote 'escapen'. Dat doe je vaak, maar kan programmeertaal afhankelijk zijn, met een backslash. In de programmeertaal uit dit voorbeeld zou je dus een string definiëren met
code:
1
"\""
om een dubbele quote af te drukken.

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 13-05 14:23

DataGhost

iPL dev

Allereerst: Python is een taal waarin whitespace belangrijk is. Dat heb je zelf al door volgens mij. Alleen in je posts is dat niet te zien. Plaats je code dus in [code] tags, dan ziet het er bijvoorbeeld zo uit:
code:
1
2
3
4
5
6
7
8
9
def alfabet(arg):
     a = arg.split()
     a.sort()
     a = print(*a)
     if a is None:
             print("a is leeg")
     else:
             print("a is niet leeg")
     return a


Met deze code zie ik het volgende:
>>> uitvoer = alfabet("Z V H B A")
A B H V Z
a is leeg
>>> print(uitvoer)
None

Dus a is gewoon leeg. Wat ik bedoelde is dat je print niet kan gebruiken om er weer een string van te maken. Daarom wees ik naar de conversiefuncties. Je maakte van je string een list door split(), dus je wilt waarschijnlijk van je list weer een string maken dmv <vul in>. Dan kan je daarna makkelijker de aanpassingen doen die jij wilt.

Ik heb je code wat aangepast (hoe vertel ik (nog) niet) en nu komt er het volgende uit:
>>> uitvoer = alfabet_beter("Z V H B A")
a is niet leeg
>>> print(uitvoer)
A B H V Z
>>> watjijwilt = magie(uitvoer)
>>> print(watjijwilt)
'A B H V Z'

Ik denk dat als je het gedrag van alfabet_beter na kan maken, dat het dan vrij simpel is om vervolgens ook magie te maken.

Acties:
  • 0 Henk 'm!

  • EvilWhiteDragon
  • Registratie: Februari 2003
  • Laatst online: 08-05 16:11
Heb je al geprobeerd je single quote voor en achter je string te plakken? Ik gok zo dat het daar ergens mis gaat ;)

Toevoeging: of ik denk gewoon veel te simpel. Welke taal spreken we trouwens?

[ Voor 26% gewijzigd door EvilWhiteDragon op 29-10-2021 12:13 ]

LinkedIn
BlackIntel


Acties:
  • +1 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 13-05 14:23

DataGhost

iPL dev

EvilWhiteDragon schreef op vrijdag 29 oktober 2021 @ 12:13:
Heb je al geprobeerd je single quote voor en achter je string te plakken? Ik gok zo dat het daar ergens mis gaat ;)

Toevoeging: of ik denk gewoon veel te simpel. Welke taal spreken we trouwens?
Er is überhaupt nog geen string.
Toevoeging: ziet eruit als Python maar dat is inderdaad niet gezegd door TS.
Toevoeging2: dit topic heeft een Python tag, zag ik pas na ctrl+f 8)7

[ Voor 17% gewijzigd door DataGhost op 29-10-2021 12:16 ]


Acties:
  • 0 Henk 'm!

  • EvilWhiteDragon
  • Registratie: Februari 2003
  • Laatst online: 08-05 16:11
DataGhost schreef op vrijdag 29 oktober 2021 @ 12:14:
[...]

Er is überhaupt nog geen string.
Toevoeging: ziet eruit als Python maar dat is inderdaad niet gezegd door TS.
Toevoeging2: dit topic heeft een Python tag, zag ik pas na ctrl+f 8)7
@ je Python observatie: scherp! Dan zeg ik hieronder mogelijk domme dingen. Mogelijk ook niet.

@ er is nog geen string: daar hintte ik dan ook op ;) Of er was een string die impliciet naar een list gecast is en dus geen string meer is.

LinkedIn
BlackIntel


Acties:
  • +1 Henk 'm!

  • SamySam
  • Registratie: Oktober 2021
  • Laatst online: 29-10-2021
Hartelijk dank jongens, ik heb het opgelost door gebruik te maken van de functie join().

@DataGhost je hebt gelijk, door print te gebruiken kan je geen string weer maken, ik heb het weg gehaald.

mijn code ziet er uiteindelijk zo uit:

def alfabet(arg):
a = arg.split()
a.sort()
b = ' '.join(a)
return b

print(alfabet("Z V H B A"))

dus eerst gesplitst, gesorteerd en weer een string van gemaakt door de functie join().

Nogmaals bedankt jongens

[ Voor 9% gewijzigd door SamySam op 29-10-2021 19:38 ]


Acties:
  • 0 Henk 'm!

  • thlst
  • Registratie: Januari 2016
  • Niet online
Dat geeft nog steeds niet je Gewenste uitvoer

Zoek eens op string concatenation

Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 13-05 18:10
thlst schreef op zaterdag 30 oktober 2021 @ 08:50:
Dat geeft nog steeds niet je Gewenste uitvoer

Zoek eens op string concatenation
De join methode van string voert concatenation uit; het voegt alle waardes uit de opgegeven lijst samen tot 1 string.

Acties:
  • 0 Henk 'm!

  • thlst
  • Registratie: Januari 2016
  • Niet online
Morrar schreef op zaterdag 30 oktober 2021 @ 12:13:
[...]


De join methode van string voert concatenation uit; het voegt alle waardes uit de opgegeven lijst samen tot 1 string.
De list bevat niet de single quotes. Deze eerst aan de list toevoegen vind ik niet de mooiste oplossing

Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 13-05 18:10
thlst schreef op zondag 31 oktober 2021 @ 07:00:
[...]


De list bevat niet de single quotes. Deze eerst aan de list toevoegen vind ik niet de mooiste oplossing
Ik ging er eigenlijk vanuit dat die quotes door de print() meekwamen. Maar als je ze expliciet wilt toevoegen zijn er natuurlijk ook genoeg opties met join:

Python:
1
2
3
f"'{' '.join(a)}'"
f"{' '.join(a)!r}"
repr(' '.join(a))
Pagina: 1