24 svar
126 visningar
destiny99 behöver inte mer hjälp
destiny99 8066
Postad: 1 nov 11:57 Redigerad: 1 nov 11:57

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.

destiny99 8066
Postad: 1 nov 12:04
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.

destiny99 8066
Postad: 1 nov 12:06
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?

destiny99 8066
Postad: 1 nov 12:08 Redigerad: 1 nov 12:10
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
destiny99 8066
Postad: 1 nov 12:19 Redigerad: 1 nov 12:20
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)
sictransit 1122 – Livehjälpare
Postad: 1 nov 12:20 Redigerad: 1 nov 12:21

Hur kör du din kod, exakt?

destiny99 8066
Postad: 1 nov 12:29
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?

destiny99 8066
Postad: 1 nov 12:53 Redigerad: 1 nov 12:55
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
destiny99 8066
Postad: 1 nov 13:24
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?

destiny99 8066
Postad: 1 nov 13:29 Redigerad: 1 nov 13:30
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. 

destiny99 8066
Postad: 1 nov 14:02 Redigerad: 1 nov 14:05
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

sictransit 1122 – Livehjälpare
Postad: 1 nov 15:00 Redigerad: 1 nov 15:01
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

destiny99 8066
Postad: 1 nov 15:09
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" ?

sictransit 1122 – Livehjälpare
Postad: 1 nov 16:54 Redigerad: 1 nov 16:55
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.

destiny99 8066
Postad: 1 nov 17:18 Redigerad: 1 nov 18:07
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")
          
      
     


thedifference 409
Postad: 2 nov 09:35

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 =)

destiny99 8066
Postad: 2 nov 12:38 Redigerad: 2 nov 12:39
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.

Svara
Close