Kmom06 frågor

  • Författare
  • Meddelande

Daniel17

*nix-hackare

  • Inlägg: 114
  • Blev medlem: 03 sep 2017, 13:05

Kmom06 frågor

Inlägg10 nov 2017, 17:34

Hej

Jag har stött på problem med quote-funktionen. Den fungerar inte när jag anger en url. Testar jag med "webbtjänsten" i övningsexemplet så funkar det. Varför och vad är en webbtjänst i sammanhanget? Vilken webbtjänst är det tänkt att man ska använda?

En fråga till:
är det meningen att man ska använda cli_parsern från kmom05 eller ska detta ersättas av getopt? Det verkar som om de båda sätten att läsa options krockar.

En annan fråga:
Jag får inte till det med att skapa if-satser för optionerna --silent och --verbose. Jag har skrivit:

if opts ["args"][verbose]:
print(long)
elif opts ["args"][silent]:
print(short)

men det funkar inte. Det jag inte förstår är var man styr innehållet som ska vara knutna till optional argumenten.
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: Kmom06 frågor

Inlägg11 nov 2017, 12:26

Daniel17 skrev:Jag har stött på problem med quote-funktionen. Den fungerar inte när jag anger en url. Testar jag med "webbtjänsten" i övningsexemplet så funkar det. Varför och vad är en webbtjänst i sammanhanget? Vilken webbtjänst är det tänkt att man ska använda?

Det står i krav 5 vilken webbtjänst som ska användas. quote-funktionen ska inte ta emot en url på kommandoraden, det ska istället vara förbestämt i ditt program vilken url som används.


Daniel17 skrev:är det meningen att man ska använda cli_parsern från kmom05 eller ska detta ersättas av getopt? Det verkar som om de båda sätten att läsa options krockar.

Modulen getopt användes i en tidigare omgång av kursen (2016), numera använder vi argparse istället. Det är meningen att du ska utgå från den kod du hade i kmom05.


Daniel17 skrev:Jag får inte till det med att skapa if-satser för optionerna --silent och --verbose. Jag har skrivit:

if opts ["args"][verbose]:
print(long)
elif opts ["args"][silent]:
print(short)

men det funkar inte. Det jag inte förstår är var man styr innehållet som ska vara knutna till optional argumenten.

Lek lite med exemplet i python/example/argparse/ och studera utskrifterna noga. Ta en kopia av exemplet och ändra koden så att du förstår bättre. Gör fler print() för att ta reda på vad som är vad, testa att ange olika index och se vad som händer. Använd gärna funktionen type() också för att ta reda på vilka typer olika saker är så du vet vilka metoder som kan användas.
Kod: Markera allt
print('innehållet i opts["args"]:', opts["args"], type( opts["args"] ))

Daniel17

*nix-hackare

  • Inlägg: 114
  • Blev medlem: 03 sep 2017, 13:05

Re: Kmom06 frågor

Inlägg13 nov 2017, 02:40

ok, nu har jag fått det mesta att fungera men en sak förbryllar:

jag kan inte få till optionet -o= bara -o, utan =-tecknet.
Utan likamedtecken skriver jag till fil men när jag har med det så hamnar argumentet under unknown_arguments och programmet kraschar.

Hur gör man för att det ska funka med =?
Användarvisningsbild

Zeldah

dbwebb

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

Re: Kmom06 frågor

Inlägg13 nov 2017, 08:36

Daniel17 skrev:Hur gör man för att det ska funka med =?

På slutet av asciinema:n visas hur man kan uppå det.

Daniel17

*nix-hackare

  • Inlägg: 114
  • Blev medlem: 03 sep 2017, 13:05

Re: Kmom06 frågor

Inlägg16 nov 2017, 21:45

Nu fungerar allt utom att skriva all-funktionen till json samt att assigna varje item i dicten på word_frequency och letter_frequency

Här finns min main-kod:

https://codeshare.io/GAvlbe

Här finns min analyzer-kod:

https://codeshare.io/5Mb1rW
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: Kmom06 frågor

Inlägg17 nov 2017, 14:33

Märkligt. Jag har läst det sista inlägget i den här tråden vid tre olika tillfällen och det har varit tre helt olika inlägg varje gång. Om du bara uppdaterat ditt senaste inlägg så är det ingen som blir uppmärksammad på att det har hänt något nytt. Det är mycket bättre att skriva ett nytt inlägg istället. Ändra-knappen ska helst bara användas för att förändra formattering och tryckfel, inte för att förändra budskapet.

Nu fungerar allt utom att skriva all-funktionen till json samt att assigna varje item i dicten på word_frequency och letter_frequency

Här finns min main-kod:

https://codeshare.io/GAvlbe

Här finns min analyzer-kod:

https://codeshare.io/5Mb1rW

Angående ditt senaste inlägg: Jag ser en rapport av läget och en stor mängd kod, men ingen fråga. Om du vill ha hjälp behöver du formulera en fråga och begränsa mängden kod till att bara visa det som relaterar till problemet.

Här på forumet kan man dela med sig av koden direkt, med hjälp av [code ][/code ]-taggarna som fungerar ungefär som HTML.

Daniel17

*nix-hackare

  • Inlägg: 114
  • Blev medlem: 03 sep 2017, 13:05

Re: Kmom06 frågor

Inlägg17 nov 2017, 17:11

ok!
Jag gör ett nytt försök:

Min frågor:

Hur lägger man resultatet av frequensy-analyserna (som blir 7 värden) in dessa som values i json-filens dictionaries?

Hur gör man motsvarande för all-analysen så att alla värden går in i dicten i json-filen?


{
"frequency_word"{
"the": "39 | 11,4%"
"nnn": "xx | xx%"
osv....


Kod: Markera allt
        if opts["args"]["commands"] == "letter_frequency":
            b = analyzer.letter_frequency()
            a["analyz3"][4]["frequency_of_letters"] = b
            y = []
            for keys, values in b.items():
                y.append(values)
                for qwe in y:
                    e = analyzer.letterAnalyzer()
                    perc = int(qwe) / int(e)
                    stri = str(qwe) + " | {:.1%}".format(perc)

                    for af in a["analyz3"][4]["frequency_of_letters"].values():
                        a["analyz3"][4]["frequency_of_letters"]
            save_to_file(a)
            print(json.dumps(a["analyz3"][4], indent=4))

        if opts["args"]["commands"] == "all":
            b = analyzer.all_commands()
            a["analyz3"][5]["all"] = b
            save_to_file(a)
            print(json.dumps(a["analyz3"][5], indent=4))
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: Kmom06 frågor

Inlägg18 nov 2017, 11:25

Det finns två olika sätt att spara till json, det finns json.dump() och json.dumps(). Notera s:et, som står för "string". Med dumps sparar man en textsträng, med dump utan s kan man istället spara en färdig datastruktur. Pythons list och dictionary går att spara till json med hjälp av dump utan s.

Det här är ett minimalt exempel på hur man kan spara en dictionary med json-struktur till en fil.
Kod: Markera allt
import json

myDict = {"a": "7%", "b": "2%"}

with open("filnamn.json", "w") as jsonFile:
    json.dump(myDict, jsonFile, indent=4)


Motsvarande funktion för att hämta dictionaryn när du läser filen är json.load(jsonFile).

Vilka är online

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