Just nu i M3-nätverket
Gå till innehåll
Rstattin

Behöver hjälp med Python-kod. OBS! Nybörjare!

Rekommendera Poster

Hej! Jag har alldeles nyss börjat lära mig Python via olika tutorials och har nu testat att göra ett eget script. Med detta program eller script vill jag kunna översätta ett ord till ett eget språk som sedan kan översättas tillbaka med hjälp av det andra scriptet/programmet som jag har. Men jag har stött på problem ganska så snabbt...

 

Ta en titt på min kod nedan:

#Test

add_one = "k"

original_word = raw_input('Enter a word and hit "ENTER":')

#Har under ar dar ordet kommer forvandlas

#2\\
first_letter = original_word[0]
new_word = original_word + first_letter + add_one
new_word = new_word[1:len(new_word)]
#2//

#Har under skriver jag villkoren for att det ska visas ett nytt ord
if len(original_word) > 0 and original_word.isalpha():
    print new_word
else:
    print "You must enter a word that does not contain any numbers and should have atleast one letter"

#Nu nar man startar upp det har scriptet sa kommer forst programmet fraga efter ett ord som man vill skriva ned, tryck sedan ENTER. Exempel sa skriver jag "TEST" och klickar ENTER. Nu har programmet sparat ordet "TEST".
#I steg #2 sa andras nu ordet "TEST" till ett nytt ord: "ESTTk"


#Nu vill jag gora ett annat program som kan "oversatta" mina ord fran detta program sa att de blir forstaerligt. Alltsa i detta fall vill jag oversatta ordet "ESTTk" sa att ordet blir det ursprungliga ordet "TEST"


#Jag testade att skriva en kod som ser ut sahar:

#1\\
add_one = "k"
#1//

#2\\
SML_word = raw_input('Enter a word to translate it to a normal word and press "ENTER":')
#2//

#3\\ 
word_length_one = len(SML_word)
   #\/Subtract the letter that was originally the first one
original_first_letter = SML_word[word_length_one - 2]
nearly_original_word = original_first_letter + SML_word
original_word = nearly_original_word - add_one
#Har forsoker jag alltsa ta bort sista bokstaven "k"
#3//

print original_word


#Nu nar jag testar denna kod sa far jag detta felmeddelande: Enter a word to translate it to a normal word and press "ENTER":ESTTk
Traceback (most recent call last):
  File "/Users/rstattin/Desktop/test.py", line 43, in <module>
    original_word = nearly_original_word - add_one
TypeError: unsupported operand type(s) for -: 'str' and 'str'


#Varfor kan man inte subtrahera (i detta fall bokstaven k) bokstaven genom att skriva "- add_one" (add_one ar ju samma sak som att skriva ut bokstaven k)

Om du har något tips eller vet hur jag ska skriva så ber jag om denna hjälp! Vill lära mig mer och mer för detta tycker jag är kul! Även om du har något nybörjartips eller tips på hur man skall lära sig så tar jag gladeligen emot all hjälp och alla tips!

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Hej! Jag har alldeles nyss börjat lära mig Python via olika tutorials och har nu testat att göra ett eget script. Med detta program eller script vill jag kunna översätta ett ord till ett eget språk som sedan kan översättas tillbaka med hjälp av det andra scriptet/programmet som jag har. Men jag har stött på problem ganska så snabbt...

 

Ta en titt på min kod nedan:

#Test

// ...

#Nu nar jag testar denna kod sa far jag detta felmeddelande: Enter a word to translate it to a normal word and press "ENTER":ESTTk
Traceback (most recent call last):
  File "/Users/rstattin/Desktop/test.py", line 43, in <module>
    original_word = nearly_original_word - add_one
TypeError: unsupported operand type(s) for -: 'str' and 'str'

Som det står där så verkar inte "minus" vara tillåtet mellan 2 strängar.

 

Är jätte dålig på Python. Ngt som man eg skulle vilja lära sig ngn gång, men ligger väligt långt ner på listan. I a f... Provade köra koden i Terminalen - så ingen "raw_input". Körde med fasta variabler istället. Eftersom jag har Python3 är "print" en funktion: print("text text").

# Test 1
# ------
test_var = "TEST"

add_one = "k"
original_word = test_var

first_letter = original_word[0]
new_word = original_word + first_letter + add_one
new_word = new_word[1:len(new_word)]
 
if len(original_word) > 0 and original_word.isalpha():
    print(new_word)
else:
    print("You must enter ...")
 
# Resultat: TEST -> ESTTk


# Test 2
# ------
test_var = "ESTTk"
 
add_one = "k"
SML_word = test_var
 
word_length_one = len(SML_word)
original_first_letter = SML_word[word_length_one - 2]
nearly_original_word = original_first_letter + SML_word

# den gamla...
#original_word = nearly_original_word - add_one

_len = len(nearly_original_word)
original_word = nearly_original_word[0:_len - 2]
# -2 för gamla första bokstaven + k

# eller som en 1liner
#original_word = nearly_original_word[0:len(nearly_original_word) - 2]

print(original_word)

Om det är rätt sätt att göra det på vet jag inte, men det funkade. :)

Redigerad av iEricF

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Som det står där så verkar inte "minus" vara tillåtet mellan 2 strängar.

 

Är jätte dålig på Python. Ngt som man eg skulle vilja lära sig ngn gång, men ligger väligt långt ner på listan. I a f... Provade köra koden i Terminalen - så ingen "raw_input". Körde med fasta variabler istället. Eftersom jag har Python3 är "print" en funktion: print("text text").

# Test 1
# ------
test_var = "TEST"

add_one = "k"
original_word = test_var

first_letter = original_word[0]
new_word = original_word + first_letter + add_one
new_word = new_word[1:len(new_word)]
 
if len(original_word) > 0 and original_word.isalpha():
    print(new_word)
else:
    print("You must enter ...")
 
# Resultat: TEST -> ESTTk


# Test 2
# ------
test_var = "ESTTk"
 
add_one = "k"
SML_word = test_var
 
word_length_one = len(SML_word)
original_first_letter = SML_word[word_length_one - 2]
nearly_original_word = original_first_letter + SML_word

# den gamla...
#original_word = nearly_original_word - add_one

_len = len(nearly_original_word)
original_word = nearly_original_word[0:_len - 2]
# -2 för gamla första bokstaven + k

# eller som en 1liner
#original_word = nearly_original_word[0:len(nearly_original_word) - 2]

print(original_word)

Om det är rätt sätt att göra det på vet jag inte, men det funkade. :)

Tack så hemskt mycket! :D Nu skall jag försöka knåpa vidare och lära mig mer :D Men tack så mycket för hjälpen! :)

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Tack så hemskt mycket! :D Nu skall jag försöka knåpa vidare och lära mig mer :D Men tack så mycket för hjälpen! :)

:ThumbsUp:

 

Har ett litet py-script jag hittade en gång när jag höll på med ett bashscript, ifall du vill ha och kika på.

 

memReport.py.txt

Ta bort .txt på slutet

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

:ThumbsUp:

 

Har ett litet py-script jag hittade en gång när jag höll på med ett bashscript, ifall du vill ha och kika på.

 

attachicon.gifmemReport.py.txt

Ta bort .txt på slutet

Tack! :D Ska ta mig en titt :)

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Såg en bra sida med olika “Cheat Sheets” igår: overapi.com

 

Här finns den med python: http://overapi.com/python/

Finns även 2 pdf'er där man kan ta ner.

Tack! Ska ta en titt!

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Hej.

jag läste inte hela koden i detalj, men kan ändå ge några idéer på hur du kan gå vidare:

Strängar har inte "minus" implementerat i Python. Det kan du se på att str.__sub__() inte finns om du letar genom giltiga metoder för string-klassen. Int tex har däremot motsvarande metod, därför kan du räkna minus med integers.

 

Det du kan titta på istället är tex str.endswith() ungefär såhär:

if nearly_original_word.endswith(add_one):
    nearly_original_word[:-len(add_one)]

Du vill säkert har en else till denna if-sats också, för att säkerställa att du inte gör lustigheter om du får fel input.

 

Notera hur jag använder "-" i indexeringen för att ta bort ett givet antal tecken från slutet utan att veta hur lång strängen är från början. Start-index (0) behöver heller inte anges.

 

Ditt problem skulle gå lösa på andra sätt också, tex med str.split(add_one) som skulle få en lite klumpig lösning eller str.rstrip(add-one), som antagligen skulle fungera i ditt exempel, men skulle ge lustigt beteende i andra fall (rekommenderas inte, annat än för att medvetet gå i fällan att använda fel lösning.

 

Ett annat förslag på lösning, som antagligen är snyggare men inte direkt lämpligt att introducera för en nybörjare (eftersom du bör lära dig standard sträng-operationer först) är att använda regexp.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...