Prep exam

  • Författare
  • Meddelande

ades18

css-hackare

  • Inlägg: 22
  • Blev medlem: 07 sep 2018, 15:36

Prep exam

Inlägg25 okt 2018, 14:33

Hallå!

Jag sitter med test-examinationen och har fastnat.
Jag gjorde först uppgift 1 och 2 separat för att få till funktionerna.

Nu har jag flyttat över dem i funktioner i analyze_functions.py enligt instruktion men på uppgift 1 får något fel jag ej förstår när jag kör correct-skriptet:

==================================================================
ERROR: test_b_analyze_text (__main__.TestFunc)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_dbwebb.py", line 50, in test_b_analyze_text
code = exam.analyze_text()
File "/Users/adrianeskilsson/dbwebb-kurser/python/me/kmom10/prep/exam.py", line 18, in analyze_text
choice = input("Välj i menyn ovan och klicka enter: ")
File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/mock.py", line 951, in __call__
return _mock_self._mock_call(*args, **kwargs)
File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/mock.py", line 1010, in _mock_call
result = next(effect)
StopIteration


Uppgift 2: Jag förstår ej riktigt instruktionerna, Ska jag skicka med en lista som argument eller gör correct-skriptet det åt mig?

==================================================================
FAIL: test_c_list_median (__main__.TestFunc)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_dbwebb.py", line 62, in test_c_list_median
self.assertEqual(exam.list_median(simple), 2)
AssertionError: [0, 1, 2, 4, 5] != 2

ades18

css-hackare

  • Inlägg: 22
  • Blev medlem: 07 sep 2018, 15:36

Re: Prep exam

Inlägg25 okt 2018, 14:36

Funktionerna ser ut såhär:

def analyze_text():
"""
analyserar text på olika sätt
"""
while True:
print("v) antal vokaler")
print("p) antal punkter")
print("u) antal stora bokstäver")
print("q) avsluta")
choice = input("Välj i menyn ovan och klicka enter: ")

if choice == "q" or choice == "quit":
break
elif choice == "v":
analyze_functions.vowels()
elif choice == "p":
analyze_functions.dots()
elif choice == "u":
analyze_functions.uppercase()
else:
input("Ogiltigt val. Klicka enter för att fortsätta.")
return True

def vowels():
"""
vowel-counter
"""
with open ("manifesto.txt", "r") as fh:
vowels = "aeiouyåäö"
counter = 0
data = fh.read()
for w in data:
if w.lower() in vowels:
counter += 1
print(counter)

def dots():
"""
dot-counter
"""
with open ("manifesto.txt", "r") as fh:
dot = "."
counter = 0
data = fh.read()
for w in data:
if w.lower() in dot:
counter += 1
print(counter)

def uppercase():
"""
uppercase-counter
"""
with open ("manifesto.txt", "r") as fh:
upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"
counter = 0
data = fh.read()
for w in data:
if w in upper:
counter += 1
print(counter)


==================================
Uppgift 2:
def list_median(values):
list1 = values
if len(list1) %2 == 1:
index1 = round(len(list1) / 2 - 0.1)
print(list1[index1])
elif len(list1) % 2 == 0:
index1 = round(len(list1) / 2 - 1)
index2 = round(len(list1) / 2)
print(list1[index1])
print(list1[index2])
Användarvisningsbild

Zeldah

dbwebb

  • Inlägg: 490
  • Blev medlem: 02 mar 2016, 10:17

Re: Prep exam

Inlägg25 okt 2018, 14:57

För första uppgiften läser vi av vad ni skriver ut med print för att kolla att ni får rätt resultat. Jag tror att du har för många print i din kod vilket gör att programmet som läser av dina output får fel. Du ska inte ha med några prints innan din input för menyvalen. Om du vill skriva ut en meny lägg den som utskriftssträng i input().
Kod: Markera allt
menu = """v) antal vokaler
p) antal punkter
u) antal stora bokstäver
q) avsluta"""
choice = input("Välj ett menyval: ", string)


AssertionError: [0, 1, 2, 4, 5] != 2 handlar inte om vad man skickar in utan vad man får tillbaka. Så du returnerar det första värdet, listan, och det andra värdet, 2:and, är vad testet förväntar sig att det ska vara.

ades18

css-hackare

  • Inlägg: 22
  • Blev medlem: 07 sep 2018, 15:36

Re: Prep exam

Inlägg25 okt 2018, 15:10

Jag har tagit bort mina print-statements från loop och har endast på sista raden i respektive funktion, men jag får ändå samma errormessage som verkar peka på just min input-rad?:

======================================================================
ERROR: test_b_analyze_text (__main__.TestFunc)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_dbwebb.py", line 50, in test_b_analyze_text
code = exam.analyze_text()
File "/Users/adrianeskilsson/dbwebb-kurser/python/me/kmom10/prep/exam.py", line 18, in analyze_text
choice = input("Välj v, p, u för div. analyser, eller q för att avsluta: ")
File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/mock.py", line 951, in __call__
return _mock_self._mock_call(*args, **kwargs)
File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/mock.py", line 1010, in _mock_call
result = next(effect)
StopIteration
Användarvisningsbild

Zeldah

dbwebb

  • Inlägg: 490
  • Blev medlem: 02 mar 2016, 10:17

Re: Prep exam

Inlägg25 okt 2018, 15:34

kan du publisera kmom10 och skriva din akronym så kan jag testa lite.

ades18

css-hackare

  • Inlägg: 22
  • Blev medlem: 07 sep 2018, 15:36

Re: Prep exam

Inlägg25 okt 2018, 15:39

Publicerat, min akronym är ades18 :D
Användarvisningsbild

Zeldah

dbwebb

  • Inlägg: 490
  • Blev medlem: 02 mar 2016, 10:17

Re: Prep exam

Inlägg25 okt 2018, 15:52

Det var inte den input som orsakade felet, det var den andra.
Kod: Markera allt
        else:
            input("Ogiltigt val. Klicka enter för att fortsätta.")

Om du läser uppgiftstexten så står det att om man skickar in något annat ska ditt program skriva ut "Not an option!".

ades18

css-hackare

  • Inlägg: 22
  • Blev medlem: 07 sep 2018, 15:36

Re: Prep exam

Inlägg25 okt 2018, 16:15

Ahh, nu fungerade det.

Men varför får jag fel på median-uppgiften?
När jag testar att föra in samma lista [0, 1, 2, 4, 5] i funktionen nederst i exam.py och kör filen i python, ej med skriptet så får jag 2 som resultat?

mvh
snurrig tentapluggare

Apaachai

på gång

  • Inlägg: 2
  • Blev medlem: 30 sep 2018, 17:14

Re: Prep exam

Inlägg25 okt 2018, 19:12

Hej!

Jag har problem med att köra kommandot "dbwebb exam correct prep", får följande felmeddelande:
Correcting the exam python:prep...
/usr/local/bin/dbwebb: line 2232: [: too many arguments
FAILED There is no auto correcting program installed.

Dock så fungerar de andra dbwebb exam kommandon (dbwebb exam checkout, seal, receipt, etc.).

Har uppdaterat dbwebb via dbwebb selfupdate -> update -> init och det hjälpte tyvärr inte. Vet inte vad mer jag behöver göra för att kunna köra alla dessa kommandon i min terminal (MacBook)?
Användarvisningsbild

Zeldah

dbwebb

  • Inlägg: 490
  • Blev medlem: 02 mar 2016, 10:17

Re: Prep exam

Inlägg26 okt 2018, 07:40

ades18 skrev:Ahh, nu fungerade det.

Men varför får jag fel på median-uppgiften?
När jag testar att föra in samma lista [0, 1, 2, 4, 5] i funktionen nederst i exam.py och kör filen i python, ej med skriptet så får jag 2 som resultat?

mvh
snurrig tentapluggare

Returnerar du värdet (2) eller skriver du bara ut det? Om jag kollar på din kod ovan ser det ut som att du bara skriver ut svaret med print. I den uppgiften ska man returnera svaret. Det är bara uppgift 1 som är lite speciell med input och output.

ades18

css-hackare

  • Inlägg: 22
  • Blev medlem: 07 sep 2018, 15:36

Re: Prep exam

Inlägg26 okt 2018, 07:42

Jaha, det var jag som slarvigt missuppfattade uppgiften. Sorry och tack för hjälpen! :)
Användarvisningsbild

Zeldah

dbwebb

  • Inlägg: 490
  • Blev medlem: 02 mar 2016, 10:17

Re: Prep exam

Inlägg26 okt 2018, 10:11

Apaachai skrev:Hej!

Jag har problem med att köra kommandot "dbwebb exam correct prep", får följande felmeddelande:
Correcting the exam python:prep...
/usr/local/bin/dbwebb: line 2232: [: too many arguments
FAILED There is no auto correcting program installed.

Dock så fungerar de andra dbwebb exam kommandon (dbwebb exam checkout, seal, receipt, etc.).

Har uppdaterat dbwebb via dbwebb selfupdate -> update -> init och det hjälpte tyvärr inte. Vet inte vad mer jag behöver göra för att kunna köra alla dessa kommandon i min terminal (MacBook)?


Då ska vi ha löst detta problemet också förhoppnisvis. Vi gissar på att du har ett space någonstans i sökvägen till prep mappen, vilket vårt program inte klarade av. Men nu ska det vara löst. Så för att det ska fungera för dig behöver du göra:
Kod: Markera allt
dbwebb selfupdate
# stå i python mappen
dbwebb update
dbwebb exam checkout prep
dbwebb exam correct prep

För säkerhetsskull kan du ta en kopia på prep innan du gör det, men inga filer som du jobbar i bör ändras när du gör det.
Sen ska det funka för dig att köra correct.

Apaachai

på gång

  • Inlägg: 2
  • Blev medlem: 30 sep 2018, 17:14

Re: Prep exam

Inlägg26 okt 2018, 11:52

Nu fungerade det, tack för hjälpen! :D

ades18

css-hackare

  • Inlägg: 22
  • Blev medlem: 07 sep 2018, 15:36

Re: Prep exam

Inlägg26 okt 2018, 13:58

Nu behöver jag en knuff i rätt riktning igen. För jag begriper sannerligen inte det här.
När jag har sammanställt strängen som ska returneras från min types-funktion,
så printar jag strängen och får ut precis som önskat. Men när jag returnerar strängen så händer det något obegripligt och istället så skickas summan av listans innehåll in i if-satsen för heltal.
Det kanske bara är ett indenteringsfel men jag har provat de platser jag antagit att det kan påverka...

funktionen:
======================================
def types(items):
"""
does different things depending on data type
"""

print(items)
strings = ""
for item in items:
if type(item) == int:
print("element no 1: ", item)
print(type(item))
string1 = "The square of " + str(item) + " is " + str(item * item)
string1 = string1 + ". "
strings = strings + string1

elif type(item) == str:
print("element no 2: ", item)
print(type(item))
string2 = "The secret word is " + item + ". "
strings = strings + string2

elif type(item) == list:
print("element no 3: ", item)
print(type(item))
string3 = ""
for i in item:
string3 = string3 + i + ", "
string3 = string3[:-2]
string3 = string3 + "."
string3 = "The list contains " + string3
strings = strings + string3
print("Precis innan return: " + strings)
return strings

utskriften:
=======================================
list: [1, 'hej', ['3', '4', '5']]
element no 1: 1
<class 'int'>
element no 2: hej
<class 'str'>
element no 3: ['3', '4', '5']
<class 'list'>
Precis innan return: The square of 1 is 1. The secret word is hej. The list contains 3, 4, 5.
list: [12] <--------- Varför händer det här?
element no 1: 12. <--------- Varför händer det här?
<class 'int'> <--------- Varför händer det här?
Bilagor
Skärmavbild 2018-10-26 kl. 13.59.01.png
Skärmavbild 2018-10-26 kl. 13.59.01.png (34.02 KiB) Visad 1311 gånger
Skärmavbild 2018-10-26 kl. 13.57.29.png
Skärmavbild 2018-10-26 kl. 13.57.29.png (109.87 KiB) Visad 1311 gånger
Användarvisningsbild

Zeldah

dbwebb

  • Inlägg: 490
  • Blev medlem: 02 mar 2016, 10:17

Re: Prep exam

Inlägg26 okt 2018, 14:12

Det ser ut som att din funktion körs två gånger. Därför du får de raderna efteråt, det är när funktionen körs en andra gång med listan [12] som argument.

Din return blir fel för att den har fel intabbning. Nu ligger den under "if list..." så då returnerar du bara något om från funktionen om det finns en lista i listan. Du vill ha return efter for-loopen.

ades18

css-hackare

  • Inlägg: 22
  • Blev medlem: 07 sep 2018, 15:36

Re: Prep exam

Inlägg26 okt 2018, 14:20

Nu ändrade jag return till for-loopen istället, men får samma resultat?

Men testkör jag med $python3 exam.py med samma lista som argument så händer det inte?
Bilagor
Skärmavbild 2018-10-26 kl. 14.17.00.png
Skärmavbild 2018-10-26 kl. 14.17.00.png (38.55 KiB) Visad 1309 gånger
Skärmavbild 2018-10-26 kl. 14.16.49.png
Skärmavbild 2018-10-26 kl. 14.16.49.png (34.02 KiB) Visad 1309 gånger
Skärmavbild 2018-10-26 kl. 14.16.39.png
Skärmavbild 2018-10-26 kl. 14.16.39.png (109.29 KiB) Visad 1309 gånger
Användarvisningsbild

Zeldah

dbwebb

  • Inlägg: 490
  • Blev medlem: 02 mar 2016, 10:17

Re: Prep exam

Inlägg26 okt 2018, 14:50

När du kör correct kommandot körs funktionen flera gånger med olika argument. Så fokusera inte på den utskriften kolla istället så att det inte blir fail eller error. Kan du visa hela utskriften så kan jag se om där faktist är några fel.

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 19 gäster