[ Príspevkov: 5 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 25.11.13
Príspevky: 6
Témy: 3 | 3

Zdravím, som v Pythone začiatočník a potreboval by som radu.

Kód:
def zadanie_cisla(cislo):
    pass   

def spravny(cislo):
    if cislo<1:
        print('nie je spravne')
    else:
        print('spravne')


zadanie_cisla(int(input('zadaj cislo: ')))
spravny(cislo)

Popíšem to: mám 2 funkcie - zadanie_cisla (do ktorého musím zadať číslo) a funkciu spravny(), ktorá to číslo musí vyhodnotiť. Problém mám s tým ako použiť to zadané číslo v druhej funkcii. Upozorňujem, že to takto musí byť rozdelné - nemôžem to dať do 1 funkcie. Dá sa to vôbec nejako ? Alebo ako zadať parametre tak, aby to šlapalo ako má.

Ak by mi niekto vedel pomôcť budem vďačný, trápim sa s tým už asi 4 hodiny..


Naposledy upravil Ďuri dňa 12.10.2013 14:50, celkovo upravené 1
[code]


Offline

Užívateľ
Užívateľ
[Python]Ako spraviť z lokálnej premennej globálnu

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96 | 96
Bydlisko: Bratislava,...

Čo sa snažíš spraviť? Funkciu na zadanie čísla a overenie? Lebo momentálne tvoja funkcia "zadanie_cisla" nerobi nič (pass).. A navyše v otázke sa pýtaš ako z lokálnej premennej spraviť globálnu, no nikde si tam nevytvoril ani len lokálnu premennú...

Takže, skúsim tvoj kód upraviť, nech sa tvári trocha rozumnejšie.. Začnem s funkciou zadanie_cisla.. Upravim to tak, nech ta funkcia skutocne vyhodnocuje zadanie cisla a jej navratovou hodnotou bude zadane cislo..
Kód:
def zadanie_cisla():
    return int(input('Zadaj cislo: '))


Funkcia spravny je potom v principe v pohode.... Ten kus kodu dole potom mozes prepisat napr. takto:
Kód:
spravny(zadanie_cisla())


Alebo ked chces pouzit lokalne premenne, tak:
Kód:
cislo = zadanie_cisla()
spravny(cislo)


Ani pri tomto pristupe vsak nepotrebujes globalnu premennu, kedze premennu cislo si posuvas ako parameter funkcie spravny.. Kebyze je funkcia spravny() bez-parametrova (teda zapisana ako "def spravny():"), tak by premenna cislo musela byt globalna... Prepis funkcie spravny na pouzivanie globalnej premennej by vyzeral takto:
Kód:
def spravny():
    global cislo
    if cislo < 1:
        print('nie je spravne')
    else:
        print('spravne')


Cely kod by potom bez pouzitia premennych vyzeral takto:
Kód:
def zadanie_cisla():
    return int(input('zadaj cislo: '))

def spravny(cislo):
    if cislo < 1:
        print('nie je spravne')
    else:
        print('spravne')

spravny(zadanie_cisla())

s pouzitim globalnej premennej by vyzeral napr. takto:
Kód:
cislo = -1

def zadanie_cisla():
    global cislo
    cislo = int(input('zadaj cislo: '))

def spravny():
    global cislo
    if cislo < 1:
        print('nie je spravne')
    else:
        print('spravne')

zadanie_cisla()
spravny()


Podla mna zapis bez globalnych premennych je krajsi, a pokial nemam nejaky explicitny dovod preco pouzit globalnu premenne, snazim sa im vyhybat...

A este jedna taka mala rada do buducnosti: Kod na tomto fore pis do tagov
Kód:
[code][/code]
, potom v nom mozes aj zachovat odsadenie a lahsie sa cita :)


_________________
~Listen to your brain, not your heart~
NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot)
NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI)
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 25.11.13
Príspevky: 6
Témy: 3 | 3
Napísal autor témyOffline : 12.10.2013 18:31 | [Python]Ako spraviť z lokálnej premennej globálnu

Ďakujem Ti, že si sa hneď pokúsil pomôcť ale ja som sa nevyjadril celkom presne čo plánujem robiť ...

Dúfal som, že sa vyhneš return -u, pretože cez tento príkaz to asi nepôjde.

Problém je v tom, že ja pri zadaní čísel nebudem zadávať iba 1 číslo ale 2 čísla a neskôr v programe budem musieť s týmito číslami pracovať. Problém číslo 2 - funkcia sa musí dať spustiť cez shell ručne - tak že zadám zadanie_čísla(20, 189) a program začne hneď porovnávať čísla 20 a 189 podľa tej podmienky if.

Skúsim to ešte raz zhrnúť - potrebujem 2 funkcie (zadaj_cisla, spravny). Funkcia zadaj_cisla sa bude spúšťať cez shell s 2 ľubovoľnými parametrami - takže do shellu zadám napr. zadaj_cisla(15,84) a potom pomocou funkcie spravny porovnám tieto čísla s podmienkou (teda či sú väčšie ako 0).

Vieš mi prosím ešte nejako pomôcť ?


Offline

Užívateľ
Užívateľ
[Python]Ako spraviť z lokálnej premennej globálnu

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96 | 96
Bydlisko: Bratislava,...

Cize ak to spravne chapem tak funkcia zadanie_cisla dostane variabilny pocet parametrov a na kazdy z nich spusti funkciu spravny?

Kód:
def zadaj_cisla(*args):
    for arg in args:
        spravny(arg)

def spravny(cislo):
    if cislo < 1:
        print('nie je spravne')
    else:
        print('spravne')

>>>zadaj_cisla(0,1,2,-1)
nie je spravne
spravne
spravne
nie je spravne


_________________
~Listen to your brain, not your heart~
NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot)
NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI)
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.13
Prihlásený: 25.11.13
Príspevky: 6
Témy: 3 | 3
Napísal autor témyOffline : 12.10.2013 20:08 | [Python]Ako spraviť z lokálnej premennej globálnu

nBXXL - Ďakujem Ti veľmi pekne, nie je to presne čo som chcel, ale z tohto si to už veľmi ľahko vyvodím. Ani nevieš ako veľmi si mi pomohol..


 [ Príspevkov: 5 ] 


[Python]Ako spraviť z lokálnej premennej globálnu



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Návod: Ako si spravit doma zmrzlinu original ako z obchodu?

v Jedlo, pitie a varenie

7

4167

22.08.2009 15:55

david3504

V tomto fóre nie sú ďalšie neprečítané témy.

Ako to spravit ?

v Siete

1

606

18.08.2008 22:32

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Ako odoslat hodnotu premennej pomocou formulara?

v PHP, ASP

3

1091

12.10.2011 17:12

Blackshadow

V tomto fóre nie sú ďalšie neprečítané témy.

Ako uložiť JS hodnotu do PHP premennej?

v JavaScript, VBScript, Ajax

1

523

21.11.2013 22:10

BX

V tomto fóre nie sú ďalšie neprečítané témy.

ako to mam spravit??

v Počítačové hry

9

1010

08.07.2007 14:07

rado1121

V tomto fóre nie sú ďalšie neprečítané témy.

Ako spraviť editovateľný footer?

v Redakčné systémy

7

792

04.07.2012 23:47

m1roslav

V tomto fóre nie sú ďalšie neprečítané témy.

ako spraviť diskusné forum

v Redakčné systémy

1

743

28.05.2007 20:14

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Ako spraviť web server

v Ostatné

10

2783

16.09.2017 22:40

ejv

V tomto fóre nie sú ďalšie neprečítané témy.

ako si to spraviť?

v Redakčné systémy

1

600

13.06.2007 17:23

Flety

V tomto fóre nie sú ďalšie neprečítané témy.

ako spravit www - FAQ...

v HTML, XHTML, XML, CSS

2

1269

20.11.2006 19:58

Kcnk

V tomto fóre nie sú ďalšie neprečítané témy.

Ako spravit galeriu obrazkov

v JavaScript, VBScript, Ajax

0

566

27.02.2010 15:47

Pades

V tomto fóre nie sú ďalšie neprečítané témy.

Ako spravit fake index ?

v PHP, ASP

6

977

04.09.2008 22:58

matto71

V tomto fóre nie sú ďalšie neprečítané témy.

Ako najrýchlejšie spraviť komentáre?

v Ostatné

1

997

09.12.2009 20:07

tomxi

V tomto fóre nie sú ďalšie neprečítané témy.

Ako spravit preklikavaci obsah

v JavaScript, VBScript, Ajax

1

503

04.09.2012 22:13

emer

V tomto fóre nie sú ďalšie neprečítané témy.

ako spravit nieco taketo???

v JavaScript, VBScript, Ajax

7

1029

06.02.2009 14:31

max-m

V tomto fóre nie sú ďalšie neprečítané témy.

Ako spravit screenshot na Android?

v Ostatné operačné systémy

13

442

06.10.2024 14:07

tatko Tom



© 2005 - 2025 PCforum, edited by JanoF