viskspråket
def remove_vowels(text):
list_vowels= ["a","e","i","o","u","y","å","ä","ö"]
result=""
for character in text:
if character.lower() not in list_vowels:
result+=character
return result
if len(sys.argv)>1 and sys.argv[1]=="v":
user_word=''.join(sys.argv[2:])
if user_word:
result=remove_vowels(user_word)
print(result)
Hej!
Denna kodbit verkar inte göra printa ut Hmlg klbbn som de säger i instruktionen nedan och jag vet inte riktigt varför. Istället körs koderna innan.
Viskspråket
Viskspråket tar bort alla vokaler ur en sträng. Implementera detta med en egen funktion och anpassa terminalgränssnittet till att anropa funktionen om användaren skriver-v som argument. Exempel på hur programmet ska fungera: $ echo "Hemliga klubben"|python3 sprak.py-v Hmlg klbbn
För att kunna använda sys behöver du importera biblioteket.
Sedan får du testa för "-v" om det är det du vill använda.
sictransit skrev:För att kunna använda sys behöver du importera biblioteket.
Sedan får du testa för "-v" om det är det du vill använda.
jag importerade en gång högst upp för andra def funktioner men behöver man göra det för just viskspråket?
destiny99 skrev:sictransit skrev:För att kunna använda sys behöver du importera biblioteket.
Sedan får du testa för "-v" om det är det du vill använda.
jag importerade en gång högst upp för andra def funktioner men behöver man göra det för just viskspråket?
För att kunna köra din kod som den står, behöver jag ett "import sys" högst upp.
sictransit skrev:destiny99 skrev:sictransit skrev:För att kunna använda sys behöver du importera biblioteket.
Sedan får du testa för "-v" om det är det du vill använda.
jag importerade en gång högst upp för andra def funktioner men behöver man göra det för just viskspråket?
För att kunna köra din kod som den står, behöver jag ett "import sys" högst upp.
okej se kod nedan.
import sys
def remove_vowels(text):
list_vowels= ["a","e","i","o","u","y","å","ä","ö"]
result=""
for character in text:
if character.lower() not in list_vowels:
result=character
return result
if __name__=="__main__":
if len(sys.argv)>1 and sys.argv[1]=="-v":
user_word=''.join(sys.argv[2:])
result=remove_vowels(user_word)
print(result)
Ser bra ut. Fungerar det?
sictransit skrev:Ser bra ut. Fungerar det?
nope. Jag får bara körning från koderna innan men inte just den koden i #5
destiny99 skrev:sictransit skrev:Ser bra ut. Fungerar det?
nope
Vänta nu. Det där är inte samma funktion längre. Du har tappat ett + i result+=character.
Med det fixat får jag:
-v ingavokalerkvar
ngvklrkvr
** Process exited - Return Code: 0 **
Press Enter to exit terminal
sictransit skrev:destiny99 skrev:sictransit skrev:Ser bra ut. Fungerar det?
nope
Vänta nu. Det där är inte samma funktion längre. Du har tappat ett + i result+=character.
Med det fixat får jag:
-v ingavokalerkvar ngvklrkvr ** Process exited - Return Code: 0 ** Press Enter to exit terminal
hm nu hänger jag inte. vilka ändringar ska jag göra för att den ska köras? här är korrigerad version.
import sys
def remove_vowels(text):
list_vowels= ["a","e","i","o","u","y","å","ä","ö"]
result=""
for character in text:
if character.lower() not in list_vowels:
result+=character
return result
if __name__=="__main__":
if len(sys.argv)>1 and sys.argv[1]=="-v":
user_word=''.join(sys.argv[2:])
result=remove_vowels(user_word)
print(result)
Hur kör du din kod, exakt?
sictransit skrev:Hur kör du din kod, exakt?
import sys
def stjarnsprak(inrad):
"""Returnerar inrad dar vartannat tecken ar en stjarna. Denna
implementation ar ineffektiv eftersom den skapar manga strangobjekt
for langa strangar, sa anvand den bara om du kor rad for rad och
inte langa texter."""
translated = "*"
for tkn in inrad:
translated += tkn + "*"
return translated
def stjarnsprak2(inrad):
"""Returnerar inrad dar vartannat tecken ar en stjarna. Denna
implementation ar mer effektiv eftersom den anvander en forandringsbar
lista och inte langre och langre strangobjekt som ar oforanderliga."""
letters = ['*']
for tkn in inrad:
letters.append(tkn)
letters.append('*')
return "".join(letters)
def translate_to_stjarna(inrad):
return stjarnsprak(inrad)
def show_help():
help_text=print("for att oversatta en strang till stjarnspraket,skriv Stjarnprogrammerare Stella")
return help_text
translation_language =input("for att oversatta en strang till stjarnspraket, skriv:")
if translation_language.strip():
translated=translate_to_stjarna(translation_language)
print(translated)
else:
print("detta språk finns inte")
show_help()
import sys
def remove_vowels(text):
list_vowels= ["a","e","i","o","u","y","å","ä","ö"]
result=""
for character in text:
if character.lower() not in list_vowels:
result+=character
return result
if __name__=="__main__":
if len(sys.argv)>1 and sys.argv[1]=="-v":
user_word=''.join(sys.argv[2:])
result=remove_vowels(user_word)
print(result)
sictransit skrev:Hur kör du din kod, exakt?
Nej, jag var nyfiken på vad du skriver när du kör koden. Har du en prompt? Vad skriver du där? Vad händer sedan?
sictransit skrev:sictransit skrev:Hur kör du din kod, exakt?
Nej, jag var nyfiken på vad du skriver när du kör koden. Har du en prompt? Vad skriver du där? Vad händer sedan?
jaha du menar så. Då får jag denna output som säger: " för att oversatta en strang till stjarnsprak, skriv: ". Jag skriver tex hemliga klubben och då får jag ut hemliga klubben med stjärna emellan bokstäverna och inget mer.
destiny99 skrev:sictransit skrev:sictransit skrev:Hur kör du din kod, exakt?
Nej, jag var nyfiken på vad du skriver när du kör koden. Har du en prompt? Vad skriver du där? Vad händer sedan?
jaha du menar så. Då får jag denna output som säger: " för att oversatta en strang till stjarnsprak, skriv: ". Jag skriver tex hemliga klubben och då får jag ut hemliga klubben med stjärna emellan bokstäverna och inget mer.
Det är inte så märkligt eftersom den koden inte ligger i någon funktion.
Den kommer att köras först, innan vi ens kommer till if __name__=="__main__".
Men om du har anropat programmet med "-v textmedvokaler", så skall den koden också köras:
PS C:\...\Python312> .\python.exe C:\tmp\destiny99.py -v tabortvokalerna
for att oversatta en strang till stjarnspraket, skriv:äsch
*ä*s*c*h*
tbrtvklrn
sictransit skrev:destiny99 skrev:sictransit skrev:sictransit skrev:Hur kör du din kod, exakt?
Nej, jag var nyfiken på vad du skriver när du kör koden. Har du en prompt? Vad skriver du där? Vad händer sedan?
jaha du menar så. Då får jag denna output som säger: " för att oversatta en strang till stjarnsprak, skriv: ". Jag skriver tex hemliga klubben och då får jag ut hemliga klubben med stjärna emellan bokstäverna och inget mer.
Det är inte så märkligt eftersom den koden inte ligger i någon funktion.
Den kommer att köras först, innan vi ens kommer till if __name__=="__main__".
Men om du har anropat programmet med "-v textmedvokaler", så skall den koden också köras:
PS C:\...\Python312> .\python.exe C:\tmp\destiny99.py -v tabortvokalerna for att oversatta en strang till stjarnspraket, skriv:äsch *ä*s*c*h* tbrtvklrn
men den skriver inte ut tbrtvklrn? hur gör jag så att den skriver ut så?
Din kod gör det när jag kör den. I mitt förra svar kan du se exakt hur jag startar programmet och vad det skriver ut.
Vad gör du annorlunda?
sictransit skrev:Din kod gör det när jag kör den. I mitt förra svar kan du se exakt hur jag startar programmet och vad det skriver ut.
Vad gör du annorlunda?
jag gör ingenting annorlunda och har inte ändrat något , men jag får inte ut samma som dig utan samma som innan. du får gärna lägga in koden som du kör så får jag testa om det funkar.
destiny99 skrev:sictransit skrev:Din kod gör det när jag kör den. I mitt förra svar kan du se exakt hur jag startar programmet och vad det skriver ut.
Vad gör du annorlunda?
jag gör ingenting annorlunda och har inte ändrat något , men jag får inte ut samma som dig utan samma som innan. du får gärna lägga in koden som du kör så får jag testa om det funkar.
Koden jag kör är en copy/paste av din. Jag kan kopiera in den igen, men kan du första posta en kopia (eller foto) av hur du kör koden. Ungefär som jag gjorde ovan.
sictransit skrev:destiny99 skrev:sictransit skrev:Din kod gör det när jag kör den. I mitt förra svar kan du se exakt hur jag startar programmet och vad det skriver ut.
Vad gör du annorlunda?
jag gör ingenting annorlunda och har inte ändrat något , men jag får inte ut samma som dig utan samma som innan. du får gärna lägga in koden som du kör så får jag testa om det funkar.
Koden jag kör är en copy/paste av din. Jag kan kopiera in den igen, men kan du första posta en kopia (eller foto) av hur du kör koden. Ungefär som jag gjorde ovan.
Jag brukar trycka på run python file och sen får jag den där i terminalen
destiny99 skrev:sictransit skrev:destiny99 skrev:sictransit skrev:Din kod gör det när jag kör den. I mitt förra svar kan du se exakt hur jag startar programmet och vad det skriver ut.
Vad gör du annorlunda?
jag gör ingenting annorlunda och har inte ändrat något , men jag får inte ut samma som dig utan samma som innan. du får gärna lägga in koden som du kör så får jag testa om det funkar.
Koden jag kör är en copy/paste av din. Jag kan kopiera in den igen, men kan du första posta en kopia (eller foto) av hur du kör koden. Ungefär som jag gjorde ovan.
Jag brukar trycka på run python file och sen får jag den där i terminalen
Men du har ju själv kodat en kontroll om användaren ger ett argument "-v" och sedan tar du resten och kör genom funktionen som tar bort vokalerna. Då måste du ju ange "-v textmedvokaler" när du startar programmet, som jag gjorde. Annars körs ju inte din kod.
...\python.exe sprak.py -v tabortvokalerna
sictransit skrev:destiny99 skrev:sictransit skrev:destiny99 skrev:sictransit skrev:Din kod gör det när jag kör den. I mitt förra svar kan du se exakt hur jag startar programmet och vad det skriver ut.
Vad gör du annorlunda?
jag gör ingenting annorlunda och har inte ändrat något , men jag får inte ut samma som dig utan samma som innan. du får gärna lägga in koden som du kör så får jag testa om det funkar.
Koden jag kör är en copy/paste av din. Jag kan kopiera in den igen, men kan du första posta en kopia (eller foto) av hur du kör koden. Ungefär som jag gjorde ovan.
Jag brukar trycka på run python file och sen får jag den där i terminalen
Men du har ju själv kodat en kontroll om användaren ger ett argument "-v" och sedan tar du resten och kör genom funktionen som tar bort vokalerna. Då måste du ju ange "-v textmedvokaler" när du startar programmet, som jag gjorde. Annars körs ju inte din kod.
...\python.exe sprak.py -v tabortvokalerna
Jaha så i terminalen ska jag skriva "-v textmedvokaler" ?
destiny99 skrev:sictransit skrev:destiny99 skrev:sictransit skrev:destiny99 skrev:sictransit skrev:Din kod gör det när jag kör den. I mitt förra svar kan du se exakt hur jag startar programmet och vad det skriver ut.
Vad gör du annorlunda?
jag gör ingenting annorlunda och har inte ändrat något , men jag får inte ut samma som dig utan samma som innan. du får gärna lägga in koden som du kör så får jag testa om det funkar.
Koden jag kör är en copy/paste av din. Jag kan kopiera in den igen, men kan du första posta en kopia (eller foto) av hur du kör koden. Ungefär som jag gjorde ovan.
Jag brukar trycka på run python file och sen får jag den där i terminalen
Men du har ju själv kodat en kontroll om användaren ger ett argument "-v" och sedan tar du resten och kör genom funktionen som tar bort vokalerna. Då måste du ju ange "-v textmedvokaler" när du startar programmet, som jag gjorde. Annars körs ju inte din kod.
...\python.exe sprak.py -v tabortvokalerna
Jaha så i terminalen ska jag skriva "-v textmedvokaler" ?
Ja, det är ju rimligt, om ditt program skall fungera. Det är ju det du frågade om.
Om du skall kunna köra en "pipe", som du ursprungligen skrev i frågan så är läget ett annat. Då måste du läsa från "stdin". Det är en helt annan sak än att hantera argument till programmet. Vi har inte ens nämnt det i den här tråden.
I så fall skall ju programmet skriva ut det som är markerat i grönt. Det är inte något som skall skickas in till det.
sictransit skrev:destiny99 skrev:sictransit skrev:destiny99 skrev:sictransit skrev:destiny99 skrev:sictransit skrev:Din kod gör det när jag kör den. I mitt förra svar kan du se exakt hur jag startar programmet och vad det skriver ut.
Vad gör du annorlunda?
jag gör ingenting annorlunda och har inte ändrat något , men jag får inte ut samma som dig utan samma som innan. du får gärna lägga in koden som du kör så får jag testa om det funkar.
Koden jag kör är en copy/paste av din. Jag kan kopiera in den igen, men kan du första posta en kopia (eller foto) av hur du kör koden. Ungefär som jag gjorde ovan.
Jag brukar trycka på run python file och sen får jag den där i terminalen
Men du har ju själv kodat en kontroll om användaren ger ett argument "-v" och sedan tar du resten och kör genom funktionen som tar bort vokalerna. Då måste du ju ange "-v textmedvokaler" när du startar programmet, som jag gjorde. Annars körs ju inte din kod.
...\python.exe sprak.py -v tabortvokalerna
Jaha så i terminalen ska jag skriva "-v textmedvokaler" ?
Ja, det är ju rimligt, om ditt program skall fungera. Det är ju det du frågade om.
Om du skall kunna köra en "pipe", som du ursprungligen skrev i frågan så är läget ett annat. Då måste du läsa från "stdin". Det är en helt annan sak än att hantera argument till programmet. Vi har inte ens nämnt det i den här tråden.
I så fall skall ju programmet skriva ut det som är markerat i grönt. Det är inte något som skall skickas in till det.
Ja jag ska läsa in med stdin. Jag provade såhär:
import sys
def visksprak(text):
list_vowels= ["a","e","i","o","u","y","å","ä","ö"]
result=""
for character in text:
if character.lower() not in list_vowels:
result+=character
return result
def rovarsprak(input_text):
a= ""
consonant= "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ"
for letters in input_text:
a+=letters
if letters in consonant:
a+="o"+letters
return a
if __name__=="__main__":
if len(sys.argv)>1:
if sys.argv[1]=="-v":
input_text=sys.stdin.read().strip()
result=visksprak(input_text)
print("translate to visksprak",result)
elif sys.argv[1]=="-r":
input_text=sys.stdin.read().strip()
a=rovarsprak(input_text)
print("translate to rovarsprak",a)
else:
print("Användning:echo\"<text>\"| python3 sprak.py -v eller -r")
Hur gick det? Din indentering ser lite mysko ut, men kanske inte är så i din faktiska kod.
Liten detalj också, y är en vokal enligt visksprak men en konsonant enligt rovarsprak =)
thedifference skrev:Hur gick det? Din indentering ser lite mysko ut, men kanske inte är så i din faktiska kod.
Liten detalj också, y är en vokal enligt visksprak men en konsonant enligt rovarsprak =)
Jag ska gå igenom den med en klasskamrat. Återkommer om det inte har löst sig.
Aa ok tack för korrigeringen.