Python
Är det några här som kan programmera Python?
Eller kanske läser det på universitet/högskola?
Här diskuteras också om ni har stöd på någon problem medans ni har skapat programm samt om ni behöver hjälp med att programmera Python.
Python är det språk jag föredrar och således det jag har störst kunskap om. Emellertid är jag ganska värdelös på att programmera i allmänhet men i den mån jag klarar av att göra någonting mer avancerat än att skriva ut "Helllo, world!", så är det i Python. Vad skall diskuteras?
Jag har en uppgift som jag håller på med i skolan och den är jävligt knepigt, tänkte komma om det var några här som kanske skulle kunna hjälpa mig lite grann.
Man ska skriva ett programm där man läser in en text fil, omvandla de första 40 ord till en lista och skriva ut listan med * före och efter ordet som förekommer två eller fler gånger. Men den ska ignorera första gången ordet förekommer. Det jag behöver hjälp med är just att den ignorerar första gången ordet förekommer. Det jag har kommit till nu är:
def visa(self, lista):
a = [x for x in lista if lista.count(x) > 1]
lista2 = ["*"+s+"*" if s in a else s for s in lista]
print(lista2)
input (lista):
['utanför', 'dörren', 'stod', 'en', 'man', 'och', 'lyssnade', 'intensivt', 'i', 'den', 'mörka', 'korridoren', 'han', 'hade', 'skuggat', 'digby', 'groat', 'hela', 'eftermiddagen', 'och', 'följt', 'efter', 'honom', 'in', 'i', 'huset', 'när', 'han', 'fick', 'höra', 'ljudet', 'av', 'fotsteg', 'från', 'rummet', 'smög', 'han', 'sig', 'in', 'i']
output (print(lista2)):
['utanför', 'dörren', 'stod', 'en', 'man', '*och*', 'lyssnade', 'intensivt', '*i*', 'den', 'mörka', 'korridoren', '*han*', 'hade', 'skuggat', 'digby', 'groat', 'hela', 'eftermiddagen', '*och*', 'följt', 'efter', 'honom', '*in*', '*i*', 'huset', 'när', '*han*', 'fick', 'höra', 'ljudet', 'av', 'fotsteg', 'från', 'rummet', 'smög', '*han*', 'sig', '*in*', '*i*']
Kan man inte göra något liknande detta: lista2 = ["*"+s+"*" if s in a and lista2.count(s) >= 1 else s for s in lista]? Då jag inte har möjlighet att testa så vet jag inte om koden fungerar, men du förstår kanske andemeningen?
EDIT: Koden fungerar tydligen inte, antagligen då lista2 refereras till innan den skapats, men poängen är att elementens förekomst i lista2 måste undersökas för att det skall vara möjligt att avgöra hur nästa element bör skrivas ut.
lista = [#en massa element]
lista2 = []
for x in lista:
if x in lista2:
lista2.append("*"+x+"*")
else:
lista2.append(x)
print(lista2)
Koden ovan är alltså vad jag utgick ifrån och den kanske förklarar lite tydligare hur jag tänkte mig att lösningen skulle kunna fungera.
Då lista = ['utanför', 'dörren', 'stod', 'en', 'man', 'och', 'lyssnade', 'intensivt', 'i', 'den', 'mörka', 'korridoren', 'han', 'hade', 'skuggat', 'digby', 'groat', 'hela', 'eftermiddagen', 'och', 'följt', 'efter', 'honom', 'in', 'i', 'huset', 'när', 'han', 'fick', 'höra', 'ljudet', 'av', 'fotsteg', 'från', 'rummet', 'smög', 'han', 'sig', 'in', 'i']
ger print(lista2) följande:
['utanför', 'dörren', 'stod', 'en', 'man', 'och', 'lyssnade', 'intensivt', 'i', 'den', 'mörka', 'korridoren', 'han', 'hade', 'skuggat', 'digby', 'groat', 'hela', 'eftermiddagen', '*och*', 'följt', 'efter', 'honom', 'in', '*i*', 'huset', 'när', '*han*', 'fick', 'höra', 'ljudet', 'av', 'fotsteg', 'från', 'rummet', 'smög', '*han*', 'sig', '*in*', '*i*']
Jag fick hjälp på stackoverflow och kom fram till detta istället:
def show(self, list1):
new_list, seen = [], set()
for x in list1:
if x in seen:
new_list.append('*{0}*'.format(x))
else:
new_list.append(x)
seen.add(x)
print new_list
Okej, huvudsaken är att det löste sig!
Tack för hjälpen förresten!
Det var ett nöje.
Jag önskar att jag kunde Python. Verkar fett nice.
Det är inte så svårt att börja lära det.
Python är ett jätte bra språk att börja med för den som inte har erfarenhet utav programmering. Det har både enkel syntax och potentialen att utvecklas med ens egen kunskapsutveckling! Så fort du lär dig loops, hur du använder funktioner och lär dig läsa libs så kan du göra det mesta.
from ctypes import * # <3
Du måste vara inloggad för att skriva i forumet