Vinnaren i pepparkakshustävlingen!
2012-07-11, 12:14
  #577
Medlem
Repins avatar
eeh....
Jag kommenterade ut en raw_input som låg långt tidigare och inte hade något med det här att göra... Då funkade det... Man måste älska programmering

edit igen. Nu fattar jag vad felet var.. Jag hade missat en closing parantes i raw_input
Erkänner villigt att jag är absolut nybörjare och är tacksam för överseendet


Citat:
Ursprungligen postat av vhe
Posta kod i kod-taggar. Särskilt Pythonkod, som inte ens är körbar utan indentering!

När jag quotade dig såg jag att du egentligen skrivit följande:

Kod:
lista = [1, 2, 3]

def listFunction():
    for X in lista:
    print X

Och detta är mycker riktigt ett syntax-fel, python förväntar sig ytterligare en indenteringsnivå i for-loopen:

Kod:
def listFunction():
    for X in lista:
        print X

Beträffande JES så är det väl hyfsat "riktig" python. Det är jython, alltså en pythoninterpretator skriven i Java. Dessutom verkar JES själv ha lite hyss för sig (bl.a. den där printNow-funktionen du (?) pratade om innan), men så stora är inte skillnaderna.

Skall jag vara helt ärlig är inte IDLE särskilt populär heller. Min taktik är att skriva kod i en "riktig" texteditor, och helt enkelt köra mina program från ett terminalfönster.

Indenteringsfelet var när jag förde över till flashback. Nu kopierar jag från koden.
IDLE rödmarkerar första raden och säger att det är fel i syntaxen.

Kod:
def one():
    for A in Charlist:
        print A

Jo, det var jag som skrev om printNow-funktionen, och det var bland annat den som jag störde mig på. Har precis börjat med IDLE, och det verkar i princip vara samma sak som att skriva i texteditor, jag hoppades att den åtminstone skulle färgkoda, men det gör den bara i terminalfönstret :/
__________________
Senast redigerad av Repin 2012-07-11 kl. 12:26.
Citera
2012-07-11, 14:43
  #578
Moderator
vhes avatar
Citat:
Ursprungligen postat av Repin
Nu kopierar jag från koden.
IDLE rödmarkerar första raden och säger att det är fel i syntaxen.

Kod:
def one():
    for A in Charlist:
        print A

Jo, det var jag som skrev om printNow-funktionen, och det var bland annat den som jag störde mig på. Har precis börjat med IDLE, och det verkar i princip vara samma sak som att skriva i texteditor, jag hoppades att den åtminstone skulle färgkoda, men det gör den bara i terminalfönstret :/

Det där är syntaktiskt korrekt, så om du får fel där är det troligen något på raden innan som är knas igen.
Hos mig färglägger IDLE även i editor-fönstret, f.ö. Låter skumt.
Citera
2012-07-13, 15:49
  #579
Medlem
Jag har problem med att läsa in wildcard argument.

I cmd skriver jag:
Kod:
>program.py *.html
*.html är alltså tänkt som argument för att läsa in flera filer.

Felet:
Kod:
      f=open(filename, 'rU)
IOError: [Errno 22] Invalid argument: '*.html'
Verkar som om jag gör fel med wildcard. Hur får jag programmet att lägga till alla html-filer i mappen som argument?

Programmet fungerar bra med ett eller flera filnamn som argument men något går snett med wildcard. Detta fungerar t.ex.
Kod:
>program.py file1.html file2.html

EDIT:
Okej, verkar som man måste göra lite annorlunda i windows. Hittade svar här:
http://stackoverflow.com/questions/4...-python-script

Citat:
In Unix, the shell expands wildcards, so programs get the expanded list of filenames. Windows doesn't do this: the shell passes the wildcards directly to the program, which has to expand them itself.
__________________
Senast redigerad av monolog 2012-07-13 kl. 16:12.
Citera
2012-07-14, 12:30
  #580
Medlem
Repins avatar
Löst: Pinsamt nog så hittade jag det så fort jag postade här efter att ha försökt i två dagar (varför är det alltid så?)
Jag hade inte sparat filen som .py

Citat:
Ursprungligen postat av vhe
Hos mig färglägger IDLE även i editor-fönstret, f.ö. Låter skumt.

Med editor-fönstret menar du det som inte är shellen antar jag?

Jag fattar inte hur jag får den att färglägga. Går in på preferences, och där kan man välja vilka färger som ska användas, men kod färgläggs bara i shellen :/ Någon som vet hur man fixar det? Jag kör IDLE 2.7.3 för Mac
__________________
Senast redigerad av Repin 2012-07-14 kl. 12:32.
Citera
2012-07-14, 12:35
  #581
Medlem
gunnarvikings avatar
Hej hej!

Jag håller på med en sommarkurs för programmering. Hjärnan har fastnat lite och svaret tycker inte som jag!

Så till problemet!


m = 0
while m < 5:
print("a", end=" ")
if m > 2:
print("b", end=" ")
m += 1


Jag ser ju framför mig att svaret ska enbart bli a, det är väl den ända den skriver ut? Eller hur ska jag tänka?
Tack på förhand
Citera
2012-07-14, 14:20
  #582
Medlem
jonthe12s avatar
Citat:
Ursprungligen postat av gunnarviking
Hej hej!

Jag håller på med en sommarkurs för programmering. Hjärnan har fastnat lite och svaret tycker inte som jag!

Så till problemet!


m = 0
while m < 5:
print("a", end=" ")
if m > 2:
print("b", end=" ")
m += 1


Jag ser ju framför mig att svaret ska enbart bli a, det är väl den ända den skriver ut? Eller hur ska jag tänka?
Tack på förhand

Varför tror du så? While är ju en loop, ingen if. Det i whilen kommer alltså repeteras så länge vilkoret är true.

Medan m är mindre än 5:
// koden kommer alltså köras 5 gånger
plussa på 1 på m
Citera
2012-07-14, 14:21
  #583
Medlem
gunnarvikings avatar
Citat:
Ursprungligen postat av jonthe12
Varför tror du så? While är ju en loop, ingen if. Det i whilen kommer alltså repeteras så länge vilkoret är true.

Medan m är mindre än 5:
// koden kommer alltså köras 5 gånger
plussa på 1 på m
Ah såklart!
Nåja, dags att börja använda hjärnan igen efter 5 års semester!
Tack ska du ha!
Citera
2012-07-15, 14:50
  #584
Medlem
Repins avatar
nu har jag problem igen

jag har en beräkning i en modul som jag vill använda i en annan.
så jag tänkte att jag gör beräkningen till en egen klass.

Kod:
class calculation:
    def Perm(self, number): # Number is the variable userInput from PemMenu()
        if self.number == 0:
            result = 1 # The factorial for 0 is 1
        elif self.number > 0:
            result = 1    # A start value for the result
            while self.number > 1:
                result = result * self.number # starts with the input number
                self.number = self.number - 1     # retracts 1 from the input number
            return result #returns the calculation
            return result

När jag försöker använda Perm(selv, number)
Kod:
def PermMenu():
    try:
        userInput = int(raw_input('input an integer, to end write a letter and press return '))
        value = calculation.Perm(userInput)
        print('The factorial for %i is %i') % (userInput,value)
    except ValueError:
        print('The value is not an integer')
        Menu()

Får jag följande felmeddelande:
"TypeError: unbound method Perm() must be called with calculation instance as first argument (got int instance instead)"

Jag förstår inte vad som är problemet. Eventuell ValueError måste ju komma innan den använder calculation.Perm() så int har ju inget med den funktionen att göra?
Citera
2012-07-15, 15:46
  #585
Medlem
jonthe12s avatar
Citat:
Ursprungligen postat av Repin
nu har jag problem igen

För att använda metoder i klasser måste du först skapa objekt av dom alternativt gör du metoden statisk. Men det är ingenting du borde ge dig in på innan du förstått klasser och objekt. Objekt skapar du genom att kalla __init__ funktionen som alltid ska finnas i klasser (återigen om den inte är statisk).

Till exempel

Kod:
class Calculation:

    
def __init__(selfnumber):
        
self.number number
    
    def Perm
(self): # Number is the variable userInput from PemMenu()
        
if self.number == 0:
            
result # The factorial for 0 is 1
        
elif self.number 0:
            
result 1    # A start value for the result
            
while self.number 1:
                
result result self.number # starts with the input number
                
self.number self.number 1     # retracts 1 from the input number
        
return result #returns the calculation
        
calculationObject Calculation(3# Man skriver inte __init__() utan den kallas av sig själv när du skriver Klassnamnet()
valuecalculationObject.Perm() 

Men det är rätt så onödigt. Varför vill du ha den i en klass som heter Calculation? Vad ska Calculationobjekten ha för uppgift? Om det är bara för att du ska kunna skriva calculation.Perm() så är det bättre att du skapar en modul. Dvs en fil som heter calculation.py som du sedan importerar.

Om du ändå vill prova på en statisk metod
Ta helt enkelt bort self överallt:

Kod:
class Calculation:

    
def Perm(number): # Number is the variable userInput from PemMenu()
        
if number == 0:
            
result # The factorial for 0 is 1
        
elif number 0:
            
result 1    # A start value for the result
            
while number 1:
                
result result number # starts with the input number
                
number number 1     # retracts 1 from the input number
        
return result #returns the calculation
        
answer Calculation.Perm(input
__________________
Senast redigerad av jonthe12 2012-07-15 kl. 15:49.
Citera
2012-07-16, 08:54
  #586
Medlem
Repins avatar
Citat:
Ursprungligen postat av FeedHurley
Vad betyder != ?
Exempel:
Kod:
tal=int(input("Gissa ett heltal mellan 1 och 100:"))
while tal != 74 :
  tal=int(input("fel, försök igen:"))
print("Grattis du gissade rätt!")

Inte lika med. Man kan också använda <> (större eller mindre än), men det kanske inte fungerar i alla situationer.

Förrsten har du pm

hehe, det känns bra att kunna svara i den här tråden för en gångs skull
__________________
Senast redigerad av Repin 2012-07-16 kl. 09:00.
Citera
2012-07-16, 09:09
  #587
Medlem
Repins avatar
Citat:
Ursprungligen postat av jonthe12

Men det är rätt så onödigt. Varför vill du ha den i en klass som heter Calculation? Vad ska Calculationobjekten ha för uppgift? Om det är bara för att du ska kunna skriva calculation.Perm() så är det bättre att du skapar en modul. Dvs en fil som heter calculation.py som du sedan importerar.

Det har du iofs rätt i. Jag satt i en annan modul och ville använda en funktion från en annan modul, och vill man göra det måste väl metoden tillhöra en klass?
Men det är klart att det är snyggare att göra den till en egen modul om den ska användas i två andra...

Delvis vill jag visserligen använda klasser, eftersom det är en inlämningsuppgift i en kurs (samma som gunnarviking läser?) och jag tänker mig att det uppskattas av läraren om man använder så många prylar som möjligt (men det är kanske viktigare att det är en bra kod)...
Citera
2012-07-16, 13:24
  #588
Medlem
jonthe12s avatar
Citat:
Ursprungligen postat av Repin
Det har du iofs rätt i. Jag satt i en annan modul och ville använda en funktion från en annan modul, och vill man göra det måste väl metoden tillhöra en klass?
Men det är klart att det är snyggare att göra den till en egen modul om den ska användas i två andra...

Delvis vill jag visserligen använda klasser, eftersom det är en inlämningsuppgift i en kurs (samma som gunnarviking läser?) och jag tänker mig att det uppskattas av läraren om man använder så många prylar som möjligt (men det är kanske viktigare att det är en bra kod)...

Att använda klasser är inte per definition bra kod utan du ska såklart använda det på rätt sätt Som svar på din fråga, nej det tror jag inte? Bara du importerar modulen

Kod:
import math #Annan modul?
cos = math.cos(2)
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback