Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse
vist jeg skal lage et program med mer enn en input/funksjon, hva gjør jeg da?

 

 

takk for hjelpen

6533506[/snapback]

 

Det kommer an på hva det er du spør om, i grunn.

 

Vil du ha flere funksjoner som du kjører?

 

Python har et velkjent grep for å sjekke om den fila du kjører er "hovedfila", ala:

 

if __name__ == "__main__": 

 funksjon1()
 funksjon2()

 

Besvarer dette spørsmålet?

Lenke til kommentar

hmm, nei :(, men se her:

 

import time

print "1=circle"

print "2=square"

Q1=raw_input("choose figure 1 or 2: ")

 

her kommer problemet, jeg skal ha enda en fks. raw_input

 

videre på den over:

 

if Q1 == "1":

Q1-r=?("enter radius: ")

Areal = Q1-r*Q1-r*3,14

print Areal

 

osv. men kommer jo ikke videre :S, "sikkert en del feil i den over"

Endret av nilsso
Lenke til kommentar
hmm, nei :(, men se her:

 

import time

print "1=circle"

print "2=square"

Q1=raw_input("choose figure 1 or 2: ")

 

her kommer problemet, jeg skal ha enda en fks. raw_input

 

videre på den over:

 

if Q1 == "1":

Q1-r=?("enter radius: ")

Areal = Q1-r*Q1-r*3,14

print Areal

 

osv. men kommer jo ikke videre :S, "sikkert en del feil i den over"

6533756[/snapback]

 

http://it.metr.ou.edu/byteofpython/while-statement.html

 

Det der er en link for deg. Du trenger en loop som går igjen og igjen til den avbrytes på noe vis.

Lenke til kommentar

hmm skjønte ikke helt det der :S, men kanskje du kan hjelpe meg med denne? hva må jeg gjøre for at denne skal gå opp?

 

import time

print "1=circle"

print "2=square"

quest=raw_input("choose between figure 1 or 2: ")

 

if quest == "1":

print "you have selected to find the areal of a circle"

Q1=input("enter the radius of the object you want to calculate: ")

circle-areal = Q1*Q1*3,14

print circle-areal

 

time.sleep(5)

 

if quest == "2":

print "you have selected to find the areal of a square"

Q2=input("enter the length of the object you want to calculate: ")

Q3=input("enter the width of the object you want to calculate: ")

square-areal = Q2*Q3

print areal

 

time.sleep(5)

Endret av nilsso
Lenke til kommentar
Gjest Slettet-8fx0y6VV

Er det noe slik som dette du er ute etter?

quit = False

while not quit:
   print "1=circle"
   print "2=square"
   quest=raw_input("choose between figure 1 or 2: [1/2]")
   if quest == '1':
       noe
   else:
       annet

   skal_mere = raw_input('Flere ganger? [y/n]')
   if skal_mere == 'n':
       quit = True

Lenke til kommentar

inviklet:P , skjønner ingenting av det der :S, en ting til :

 

hva er feilen her? :

 

import time

print "1=circle"

print "2=square"

quest=raw_input("choose between figure 1 or 2: ")

if quest == '1':

--- print "you have selected to find the areal of a circle"

--- Q1 = raw_input("enter the radius of the object you want to calculate: ")

--- circle-areal = Q1*Q1*3,14

--- print circle-areal

--- time.sleep(5)

--- else:

--- print "you have selected to find the areal of a square"

--- Q2=raw_input("enter the length of the object you want to calculate: ")

--- Q3=input("enter the width of the object you want to calculate: ")

--- square-areal = Q2*Q3

--- print square-areal

--- time.sleep(5)

 

print "n=no"

print "y=yes"

mer = raw_input("do you want to try again?: [n\y]")

if mer == 'n':

--- print "alright, have a good day!"

--- time.sleep(5)

--- else:

--- print "please restart this program!"

--- time.sleep(5)

 

EDIT: nei beklager nå roter jeg ...

Endret av nilsso
Lenke til kommentar
inviklet:P , skjønner ingenting av det der :S, en ting til :

 

hva er feilen her? :

 

Det er flere feil (uthevet):

 

import time

print "1=circle"

print "2=square"

quest=raw_input("choose between figure 1 or 2: ")

if quest == '1':

---    print "you have selected to find the areal of a circle"

---    Q1 = raw_input("enter the radius of the object you want to calculate: ")

---    circle-areal = Q1*Q1*3,14

---    print circle-areal

---    time.sleep(5)

---  else:

---      print "you have selected to find the areal of a square"

---      Q2=raw_input("enter the length of the object you want to calculate: ")

---      Q3=input("enter the width of the object you want to calculate: ")

---      square-areal = Q2*Q3

---      print square-areal

---      time.sleep(5)

     

print "n=no"

print "y=yes"

mer = raw_input("do you want to try again?: [n\y]")

if mer == 'n':

---    print "alright, have a good day!"

---    time.sleep(5)

---    else:

---        print "please restart this program!"

---      time.sleep(5)

 

6534974[/snapback]

 

1. Du kan ikke ha variabelnavn med '-' (bindestrek) i. Det er vanlig å bruke '_' (understrek) for å skille flere ord i et variabelnavn. Så i steden for circle-areal, kan du bruke circle_areal. Det samme gjelder for square-areal.

 

2. Når du får input fra brukeren med raw_input metoden, får du dette som en string. Hvis du vil regne på denne (som i ditt tilfelle), må du konvertere det om til et tall med int eller float metoden. Siden du regner på reelle tall, er det greit med float her. Altså du bytter ut

 

Q1 = raw_input("enter the radius of the object you want to calculate: ")

med

 

Q1 = float(raw_input("enter the radius of the object you want to calculate: "))

 

3. Beregningen Q1*Q1*3,14 blir feil. Dette vil returnere et tuple siden du bruker ',' og ikke '.' i tallet 3.14.

 

Sist, men ikke minst: Prøv og se litt mer på while-løkken som rapt0r postet. Det er best å slippe og restarte programmet hver gang man vil prøve på nytt.

Lenke til kommentar

Lagde en liten sak selv. Moro og sitte med python og syssle litt igjen :)

Trikset her er at menyen lagres i en liste (meny) med menyelementer, der først navnet på formelen spesifiseres, deretter parameterene som trengs, og til slutt selve formelen.

Deretter tar "menysystemet" seg av resten.

 

menu = [["Area of circle",["radius"],"int(radius)*2*3.14"],
       ["Area of square",["sidelength"],"int(sidelength)**2"],
       ["Area of rectangle",["height","width"],"int(height)*int(width)"]
       ]

while(1):
   print "\nSuperprogram..\nMenu:"
   for menuitem in menu:
       print str(menu.index(menuitem))+": "+menuitem[0]
   print str(len(menu))+": Quit"
   menuchoice = raw_input("Please enter number for function: ")
   imc = int(menuchoice)
   if(imc>=0 and imc<len(menu)):
       args={}
       for param in menu[imc][1]:
           args[param]=raw_input("Please enter the "+param+": ")
       print menu[imc][0]+": "+str(eval(menu[imc][2],args))
       
   elif(imc==len(menu)):
       print "Have a nice day!"
       break
   else:
       print "Invalid choice; try again\n"

Lenke til kommentar
Lagde en liten sak selv. Moro og sitte med python og syssle litt igjen :)

Trikset her er at menyen lagres i en liste (meny) med menyelementer, der først navnet på formelen spesifiseres, deretter parameterene som trengs, og til slutt selve formelen.

Deretter tar "menysystemet" seg av resten.

 

menu = [["Area of circle",["radius"],"int(radius)*2*3.14"],
       ["Area of square",["sidelength"],"int(sidelength)**2"],
       ["Area of rectangle",["height","width"],"int(height)*int(width)"]
       ]

while(1):
   print "\nSuperprogram..\nMenu:"
   for menuitem in menu:
       print str(menu.index(menuitem))+": "+menuitem[0]
   print str(len(menu))+": Quit"
   menuchoice = raw_input("Please enter number for function: ")
   imc = int(menuchoice)
   if(imc>=0 and imc<len(menu)):
       args={}
       for param in menu[imc][1]:
           args[param]=raw_input("Please enter the "+param+": ")
       print menu[imc][0]+": "+str(eval(menu[imc][2],args))
       
   elif(imc==len(menu)):
       print "Have a nice day!"
       break
   else:
       print "Invalid choice; try again\n"

6537278[/snapback]

 

nei det der skjønte jeg ingeeeeenting av :p men enig i det jah, morsomt å sitte å putle med det :D ( jeg får vel lese litt mer python )

Lenke til kommentar

Prøvde å lage ei alternativ løsning her: https://www.diskusjon.no/index.php?showtopi...dpost&p=6574823

 

 

menu = [['Area of circle',lambda radius: int(radius)*2*3.14],
       ['Area of square',lambda sidelength:int(sidelength)**2],
       ['Area of rectangle',lambda height,width: int(height)*int(width)]
      ]
try:
   while 1:
       print "\nSuperprogram..\nMenu:"
       print '\n'.join('%d: %s' % \
                    (menu.index(menuitem), menuitem[0]) for menuitem in menu)

       try:
           choice = int(raw_input('Please enter number for function, ctrl+c to quit: '))
           index = menu[choice]
       except ValueError, IndexError:
           print 'No such option %s, try again' %(choice)
           continue
       
       answers = []

       try:
           for param in index[1].func_code.co_varnames:
               answers.append(float(raw_input('Please specify the %s:' %param)))
       except ValueError:
           #print 'Invalid choice; try again'
           print "Starting from the beginning, sigh, why didn't you specify a mathematical value?"
           continue
              
       
       print index[0], ':', index[1](*answers)
except KeyboardInterrupt:
   print 'Have a nice day!'

 

og btw: (nesten?) alt i python er objekter :)

Endret av dabear
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...