10 svar
242 visningar
hejsvejs1 7
Postad: 21 jun 2022 09:54

Python, Sträng- byter första och sista tecknet

Hej!

Jag behöver hjälp med denna fråga.

fråga 1: Skriv ett program, i Python, som läser in en sträng, byter första och sista tecknet i strängen och skriver ut resultatet på skärmen.

Exempel: Indata: 'Hejsan' --> Utdata: 'nejsaH'

 

fråga2: Skriv ett program som läser in en sträng, tar bort varje tecken med udda index och skriver ut resultatet på skärmen.

tomast80 4212
Postad: 21 jun 2022 10:23

Här är exempel på kod för att få fram första tecknet:

# Get first character of string i.e. char at index position 0
first_char = sample_str[0]
 
print('First character : ', first_char)

hejsvejs1 7
Postad: 21 jun 2022 10:58
tomast80 skrev:

Här är exempel på kod för att få fram första tecknet:

# Get first character of string i.e. char at index position 0
first_char = sample_str[0]
 
print('First character : ', first_char)

Hej, tack för ditt svar. jag har inga problem att ta fram exempelvis olika tecken i form av "varannan tecken" eller från tecken 1 till och med tecken 6 som jag visar i exempel nedanför:

print("hejsvejs"[1:6])

ejsve

 

MEN vet tyvärr inte hur jag ändrar från Hejsan => nejsaH

 

tack för ditt svar!

joculator 5285 – F.d. Moderator
Postad: 21 jun 2022 11:11

Börja med att läsa in en sträng:

in_str=input('Input string:')

Sista tecket är

in_str[-1]

Alla tecken utom första och sista är:

in_str[1:len(in_str)-1]

Och förstatecknet är 

in_str[0]

Så för att läsa in en sträng och sedan skriva ut strängen fast byta plats på första och sista tecket:

in_str=input('Input string:')
print(in_str[-1]+in_str[1:len(in_str)-1]+in_str[0])
hejsvejs1 7
Postad: 21 jun 2022 11:12

str_1 = "hejsan"
print(str_1[-1]+str_1[1:5]+str_1[0:1])

nejsah

 

fråga 1 LÖST

fråga 2: fortfarande olöst

joculator 5285 – F.d. Moderator
Postad: 21 jun 2022 11:13 Redigerad: 21 jun 2022 11:14
hejsvejs1 skrev:

str_1 = "hejsan"
print(str_1[-1]+str_1[1:5]+str_1[0:1])

nejsah

 

fråga 1 LÖST

fråga 2: fortfarande olöst

Du missar att du skall läsa in strängen i fråga 1.
Vidare har du hårdkodat längden på strängen. Så om man byter sträng till en med annan längd slutar din kod att fungera

hejsvejs1 7
Postad: 21 jun 2022 11:13
joculator skrev:

Börja med att läsa in en sträng:

in_str=input('Input string:')

Sista tecket är

in_str[-1]

Alla tecken utom första och sista är:

in_str[1:len(in_str)-1]

Och förstatecknet är 

in_str[0]

Så för att läsa in en sträng och sedan skriva ut strängen fast byta plats på första och sista tecket:

in_str=input('Input string:')
print(in_str[-1]+in_str[1:len(in_str)-1]+in_str[0])

Tack för ditt svar!! 

vad menas len i detta?

joculator 5285 – F.d. Moderator
Postad: 21 jun 2022 11:14 Redigerad: 21 jun 2022 11:15

len   (kort för length) ger dig längden på strängen  (antal tecken)

hejsvejs1 7
Postad: 21 jun 2022 11:16
joculator skrev:
hejsvejs1 skrev:

str_1 = "hejsan"
print(str_1[-1]+str_1[1:5]+str_1[0:1])

nejsah

 

fråga 1 LÖST

fråga 2: fortfarande olöst

Du missar att du skall läsa in strängen i fråga 1.
Vidare har du hårdkodat längden på strängen. Så om man byter sträng till en med annan längd slutar din kod att fungera

funkar på en annan sträng. Kan du förklara vad du menar med läsa in?

joculator 5285 – F.d. Moderator
Postad: 21 jun 2022 11:19 Redigerad: 21 jun 2022 11:26

Testa med en sträng med annan längd. tex .... "telefonkatalog"

Med läsa in menas att ditt ptogram får strängen från tex en textfil eller som i mitt exempel att den som kör programmet får skriva in en sträng när den kör programmet.
Testa mitt exempel så ser du hur det fungerar.

joculator 5285 – F.d. Moderator
Postad: 21 jun 2022 11:26 Redigerad: 21 jun 2022 11:29

Fråga 2 borde vara en egen tråd (för att det blir mindre rörigt).
Man kan lösa denna fråga på många sätt, vissa mer svårlästa än andra.
Här är en kort lösning som kanske inte är helt uppenbar:

in_str=input('Input string:')
print(in_str[::2])

Men du lär dig mer på att fundera fram en egen lösning och arbeta igenom den (med vår hjälp om du vill).

Svara Avbryt
Close