Oud 17-10-2009, 11:47
Mewmew
Avatar van Mewmew
Mewmew is offline
Ik ben dus bezig met leren in Python te programmeren, en hiervoor ben ik bezig met een opdracht waar ik maar niet uitkom. De opdracht is dat ik de gebruiker een DNA sequentie op laat geven en vervolgens een motief (een stukje sequentie), en dat het progamma dat in de DNA sequentie gaat zoeken en vervolgens zegt of het motief erin voorkomt.

Voor degenen die niks met Biologie hebben; een data sequentie is gewoon een reeks letters, dus ahdbdbfjfj (even voor het gemak, ik hoef nog niet rekening te houden met welke letters wel en niet mogen, dus ik laat alle letters toe), en een motief is dus een stukje daarvan, zoals aanccy (dit motief komt niet in de DNA sequentie voor) of ahd (dit motief komt wel in de DNA sequentie voor.

Ik heb tot nu toe dit:

lijst=[]
seq1=str(input("Geef een DNA - of eiwitsequentie: "))
motief=str(input("Geef een motief: "))
lijst.append(motief)
lijst.index(seq1)
if motief in seq1:
print ("Dit motief zit in de opgegeven sequentie.")
else:
print("Dit motief zit niet in de opgegeven sequentie.")

Maar hij heeft deze error:

Traceback (most recent call last):
File "C:\Progamma's\melanie\test.py", line 37, in <module>
lijst.index(seq1)
ValueError: list.index(x): x not in list

Ik heb al vanalles geprobeert, maar niks helpt. :/ Ik ben een nub programmeur, dus ik hoop dat jullie na 1 oogopslag de fout zien (zoals mijn leraar). Kunnen jullie helpen? :]

Alvast bedankt.

Edit: Ohh de spaties vallen weg als ik het bericht verstuur, nou ja het gaat meer om de code zelf.
Met citaat reageren
Advertentie
Oud 21-10-2009, 09:13
Rob
Avatar van Rob
Rob is offline
Ik kan niet echt Python, maar volgens mij draai je 't om? >_>

lijst.append(motief) stopt je motief in je lijst, hetgene waarnaar je wilt zoeken. Met lijst.index(seq1) probeer je de index op te vragen waar de substring begint die jouw sequence bevat. Je zoekt dan dus in lijst (die gelijk is aan motief) naar je sequence. Als je motief kleiner is dan je sequence, ga je 'm nooit vinden, wat resulteert in de foutmelding.

Moet het niet zoiets als dit zijn?

PHP-code:
sequence str(input("Geef een DNA- of eitwitsequentie: "))
motief str(input("Geef een motief: "))
if 
motief in sequence:
  print (
"Motief gevonden.")
else
  Print (
"Motief niet gevonden."
Strings zijn vaak character arrays of lijsten van characters, dus veel array- of lijstoperaties zijn toepasbaar op strings en de in operator is te gebruiken om te controleren of een substring in een string voorkomt.

Jouw manier kan ook. Dan krijg je zoiets als dit:

PHP-code:
sequence str(input("Geef een DNA- of eitwitsequentie: "))
motief str(input("Geef een motief: "))
try:
  if 
sequence.index(motief) > 0:
  print(
"Motief gevonden.")
  break
except ValueError:
  print(
"Motief niet gevonden."
index werkt door de gevraagde substring op te zoeken en de index terug te geven waarop de substring in de originele string begint en er wordt een ValueError opgegooid wanneer de substring niet aanwezig is. Wil je geen fouten afvangen, gebruiken dan find, want deze gooit geen fouten en keert -1 terug als de substring niet bestaat.
__________________
Bad spelling and grammar make me [sic].

Laatst gewijzigd op 21-10-2009 om 09:16. Reden: Kromme zinnen. :D
Met citaat reageren
Oud 21-10-2009, 21:46
Warsocket
Avatar van Warsocket
Warsocket is offline
Citaat:
index werkt door de gevraagde substring op te zoeken en de index terug te geven waarop de substring in de originele string begint en er wordt een ValueError opgegooid wanneer de substring niet aanwezig is. Wil je geen fouten afvangen, gebruiken dan find, want deze gooit geen fouten en keert -1 terug als de substring niet bestaat.
Als het is voor school, of sowieso omdat je python wilt leren kennen, doe het dan op de python manier

en dat is met
try:
except():

Meerdere dingne in python werken op die manier.

en de filisofie van python is eerst proberen faalt het dan afhandelen

dus een functie div (om te delen)

schrijf je in python gewoon als return a/b

en niet if (b != 0) :
else


etc etc



Eerst proberen en de errors afvangen is de python manier om het te doen. (het kan natuurlijk anders maar dat is niet hoe het "bedoelt" is)
__________________
01110100011001010111011001100101011001010110110000100000011101000
11010010110101001100100001000000011111100111111001000000011101001010000
Met citaat reageren
Oud 22-10-2009, 08:45
Rob
Avatar van Rob
Rob is offline
Citaat:
Als het is voor school, of sowieso omdat je python wilt leren kennen, doe het dan op de python manier

en dat is met
try:
except():

Meerdere dingne in python werken op die manier.

en de filisofie van python is eerst proberen faalt het dan afhandelen

dus een functie div (om te delen)

schrijf je in python gewoon als return a/b

en niet if (b != 0) :
else


etc etc



Eerst proberen en de errors afvangen is de python manier om het te doen. (het kan natuurlijk anders maar dat is niet hoe het "bedoelt" is)
Ondanks dat het de Python-manier is, zou ik 't niet bij alles een try-except doen. Bij je div voorbeeld zeker, maar bij iets als mewmew's voorbeeld zou ik zelf voor find gaan zodat ik geen fouten af hoef te vangen en dat doe ik niet eens zozeer omdat het een call op de stack bespaard.

Het is maar voorkeur, maar ik ben wel benieuwd waar je die filosofie vandaan haalt. Heb je een URL?
__________________
Bad spelling and grammar make me [sic].
Met citaat reageren
Oud 22-10-2009, 16:54
Warsocket
Avatar van Warsocket
Warsocket is offline
in docs.python.org [proef ik dezelfde filisofie maar ik had een betere url zal ik nog eens een keer zoeken,

en je hebt bijvoorbeeld een zerodivisionexception, en die zouden ze er niet in stoppen als hun idee was, kijk maar lekker zelf of je deelt door 0.

En de python hass 1 way to do things perl has 20

die kan je gewoon lezen op de site van python
(of ook op docs.python.org)

maar wat betreft die ene call vd stack, als je je daar zorgen om maakt, om die ene pointer extra, dan moet je sowieso niet in python bezig zijn maar in assembler (of misschien c)
__________________
01110100011001010111011001100101011001010110110000100000011101000
11010010110101001100100001000000011111100111111001000000011101001010000
Met citaat reageren
Oud 23-10-2009, 08:40
Rob
Avatar van Rob
Rob is offline
Citaat:
in docs.python.org [proef ik dezelfde filisofie maar ik had een betere url zal ik nog eens een keer zoeken,

en je hebt bijvoorbeeld een zerodivisionexception, en die zouden ze er niet in stoppen als hun idee was, kijk maar lekker zelf of je deelt door 0.

En de python hass 1 way to do things perl has 20

die kan je gewoon lezen op de site van python
(of ook op docs.python.org)

maar wat betreft die ene call vd stack, als je je daar zorgen om maakt, om die ene pointer extra, dan moet je sowieso niet in python bezig zijn maar in assembler (of misschien c)
Om de stack maak ik mij niet zozeer zorgen, vandaar de achter die zin.

Bedoel je deze quote?

Citaat:
"To describe something as clever is NOT considered a compliment in the Python culture." Python's philosophy rejects the Perl "there is more than one way to do it" approach to language design in favor of "there should be one—and preferably only one—obvious way to do it".
Daar ben ik 't wel mee eens, maar bij de meeste exception handling vraag ik mij nog wel eens af of ik het wel of niet moet doen. Daarom ben ik wel blij met .NET: als ik exceptions af wil vangen doe ik dat wel en anders niet.

Ik ben en blijf een Python n00b.
__________________
Bad spelling and grammar make me [sic].
Met citaat reageren
Advertentie
Reageren

Topictools Zoek in deze topic
Zoek in deze topic:

Geavanceerd zoeken

Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Huiswerkvragen: Exacte vakken [INF] Python - def Inlezen()
TrippV
4 15-09-2008 09:48
Huiswerkvragen: Exacte vakken [IN] Programmeren
Tripp
1 12-01-2008 11:56
Verhalen & Gedichten Een gedeelte uit mijn leven..
U*NiQ
3 28-09-2005 18:06
Software & Hardware [Linux] Vraagje over shellscripts
the_kiamen
5 08-12-2004 01:24
Algemene schoolzaken help; life of brian (monty python)
HIM-doll
11 10-01-2002 21:08


Alle tijden zijn GMT +1. Het is nu 18:30.