www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Python problem

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Raspberry Pi sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3358
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Dec 10, 2020 1:54 pm    Naslov sporočila:  Python problem Odgovori s citatom

Rad bi napisal funkcijo, kjer bi v funkciji določal vrednost v neki spremenljivki. Kako naj definiram v funkciji spremenljivko, ki se ne bo pri vsakem klicu funkcije resetirala na začetno vrednost.

Napisal sem python kodo, kjer imam samo eno tako spremenljivko, i, ki bodi integer in ki se pri vsakem klicu funkcije inkremetira zaena. rezultat vrne funkcija v tekst spremenljivki x ki jo potem glavni program izpiše.

Ker nikakor ne najdem sufixa datoteke, ki bi jo lahko pripel kot attachment, cel program dam v ta tekst:

#/usr/bin/python
# -*- coding: utf-8 -*-
"""

kako moram definirati spremenljivko v funkciji da bo štela,
kolikograt sem klical funkcijo

"""

program = "anafix2.py"
import time
import serial

def stejem():
i = int(00)
x = str(i)
i = i + 1
return (x)

loop_start_time = time.time()
print (time.strftime("%Y-%m-%d %H:%M:%S"))
print ("Program ",program," startan.",'\n' )

x = stejem()
print (x) # naj bi napisal 0
x = stejem()
print (x) # naj bi napisal 1 ampak napiše tudi tukaj 0

print ("konec programa.")

_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Obelix
Član
Član



Pridružen-a: Pon 19 Maj 2008 13:59
Prispevkov: 1881
Aktiv.: 9.05
Kraj: Maribor

PrispevekObjavljeno: Čet Dec 10, 2020 2:17 pm    Naslov sporočila:   Odgovori s citatom

Ne poznam Pythona. Ampak ko gledam to funkcijo:

def stejem():
i = int(00)
x = str(i)
i = i + 1
return (x)

Se mi zdi da z i=int(00) postaviš i na nič, potem pa prirediš x=str(i).
Potem i sicer povečas za 1. Ampak pri ponovnem klicu je zopet najprej i=int(00).

Mogoče se pa motim.

Lep pozdrav.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3358
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Dec 10, 2020 2:19 pm    Naslov sporočila:   Odgovori s citatom

Ne, imaš čisto prav, toda če ne nekako definiram spremenljivke, se ne morem pozivati na njeno ime. Ravno to je vprašanje: Kako naj definiram spremenljivko v funkciji, ne da bi vplival na njeno vsebino.
_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Obelix
Član
Član



Pridružen-a: Pon 19 Maj 2008 13:59
Prispevkov: 1881
Aktiv.: 9.05
Kraj: Maribor

PrispevekObjavljeno: Čet Dec 10, 2020 2:40 pm    Naslov sporočila:   Odgovori s citatom

Definiraj jo zunaj funkcije. Nekje na začetku.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3358
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Dec 10, 2020 5:48 pm    Naslov sporočila:   Odgovori s citatom

Ravno temu se bi rad izognil. Rad bi, da se podatki izmenjali iz funckije v glavni program samo preko rezultata funkcije in programer ne bi bil vezan na nobene definicije v zvezi z funkcijo.
Ampak izgleda, da je ta bitka izgubljena. Se mi često dogaja, da se počutim, kot da bi hotel ptičje mleko, in potem me ljudje čudno gledajo.

Kakorkoli, vsem hvala za pomoč
VS

_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3358
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Dec 10, 2020 6:21 pm    Naslov sporočila:   Odgovori s citatom

Ja, tako dela, a me ne naredi srečnega: Hotel bi, da glavni program ne ve nič o spremenljivki i, da je ta
interna samo v funkciji, da bi programerju glavnega programa ne bilo treba misliti na spremljivko i (in druge
spremenljivke) ki jih uporablja glavni program.

Koda:
program = "anafix2.py"
import time
import serial
i = 0
def stejem():
  global i
  x = str(i)
  i = i + 1
  return (x)

loop_start_time = time.time()
print (time.strftime("%Y-%m-%d %H:%M:%S"))  
print ("Program ",program," startan.",'\n' )

x = stejem()
print (x)   # naj bi napisal 0
x = stejem()
print (x)   # naj bi napisal 1 ampak napiše tudi tukaj 0

print ("konec programa.")

_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
blay44
Član
Član



Pridružen-a: Ned 19 Dec 2010 18:17
Prispevkov: 604
Aktiv.: 3.42

PrispevekObjavljeno: Čet Dec 10, 2020 10:41 pm    Naslov sporočila:   Odgovori s citatom

Če prav razumem bi radi nekaj takega?
Sicer je tole lahko fejst umazano

def stejem():
global i
i += 1
stejem.x = str(i)
return stejem.x

A ni bejzik lepši in bolj praktičen? Za kaj hitrega pa C.dll
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
eddie
Član
Član



Pridružen-a: Sre 10 Dec 2003 21:02
Prispevkov: 723
Aktiv.: 3.05
Kraj: Severna primorska

PrispevekObjavljeno: Pet Dec 11, 2020 10:24 am    Naslov sporočila:   Odgovori s citatom

Osnovna defiicija funkcije je, da si stvari ne zapomni.
Vse informacije, ki jih rabi ji je treba dati kot parameter in jih na koncu izvajanja funkcije vračati nazaj in hraniti zunaj funkcije. Tako to je.
Uporaba predpone global je ena varjanta, druga možnost je da je števec vhodni parameter ob klicu in ga funkcija na koncu vrne kot del rezultata...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Raspberry Pi sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group