 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3357 Aktiv.: 14.17 Kraj: Dragomer
|
Objavljeno: Čet Dec 10, 2020 1:54 pm Naslov sporočila: Python problem |
|
|
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 |
|
 |
Obelix Član

Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1881 Aktiv.: 9.05 Kraj: Maribor
|
Objavljeno: Čet Dec 10, 2020 2:17 pm Naslov sporočila: |
|
|
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 |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3357 Aktiv.: 14.17 Kraj: Dragomer
|
Objavljeno: Čet Dec 10, 2020 2:19 pm Naslov sporočila: |
|
|
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 |
|
 |
Obelix Član

Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1881 Aktiv.: 9.05 Kraj: Maribor
|
Objavljeno: Čet Dec 10, 2020 2:40 pm Naslov sporočila: |
|
|
Definiraj jo zunaj funkcije. Nekje na začetku. |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3357 Aktiv.: 14.17 Kraj: Dragomer
|
Objavljeno: Čet Dec 10, 2020 5:48 pm Naslov sporočila: |
|
|
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 |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3357 Aktiv.: 14.17 Kraj: Dragomer
|
Objavljeno: Čet Dec 10, 2020 6:21 pm Naslov sporočila: |
|
|
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 |
|
 |
blay44 Član


Pridružen-a: Ned 19 Dec 2010 18:17 Prispevkov: 604 Aktiv.: 3.42
|
Objavljeno: Čet Dec 10, 2020 10:41 pm Naslov sporočila: |
|
|
Č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 |
|
 |
eddie Član

Pridružen-a: Sre 10 Dec 2003 21:02 Prispevkov: 723 Aktiv.: 3.05 Kraj: Severna primorska
|
Objavljeno: Pet Dec 11, 2020 10:24 am Naslov sporočila: |
|
|
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 |
|
 |
|
|
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: 491 dni
Powered by phpBB © 2001, 2005 phpBB Group
|