Forum » Programiranje » Python keyError 3
Python keyError 3
filips ::
Imam spodnjo kodo:
Spremenljivke pa imam komentar={0: '00', 1: '01', 2: '02'} in value={'a': ['b', 'c', 1], 'a2': ['b2', 'c2', 2], 'a3': ['b3', 'c3', 3]}
import os import os.path global classShow global otherShow global stevilo global komentar global status global status_message global value global file global string stevilo=0 status=1 value={} string='' komentar={} def toString(className='',addclass='',addnoclass=''): global status global string global komentar global classShow global otherShow global value if status!=0: if classShow=='' or otherShow=='': status_message=language.showClassShowOther status=0 if classShow==1: string += "class "+className+''': ''' if komentar!='': string += '#'+komentar[0]+"\n\t" for k, v in value.items(): if(v[1] == ''): string += 'public '+k+"='"+v[0]+'''" ''' else: string += 'public '+k+"='"+v[0]+'" #'+v[1]+''' ''' print (v[2]) #zbriši if komentar[v[2]] in globals(): string += ''' #'''+komentar[v[2]]+''' ''' if addclas!='': string +=''' '''+addclass+''' ''' string +=''' ''' if otherShow==1: if komentar[0] in globals(): string += '#'+komentar[0]+'' for k, v in value.items(): if v['1'] == '': string += ''' '''+k+'="'+v[0]+'"' else: string += ''' '''+k+'="'+v[0]+'" #'.v[1] if komentar[v[2]] in globals(): string += ''' #'''+komentar[v[2]]+'' if addnoclass!='': string +=''' '''+addnoclass+'' return stringV if stavku:
if komentar[v[2]] in globals(): string += ''' #'''+komentar[v[2]]+''' '''želim preveriti če spremennljivka komentar[v2] obstaja in če obstaja naj izpiše neko besedilo. Meni pa napiše napako:
Traceback (most recent call last): File "C:\Users\Miha\documents\visual studio 2015\Projects\Python config\Python config\pythonConfig\pythonConfig.py", line 120, in <module> toString('className','addclass','addnoclass') File "C:\Users\Miha\documents\visual studio 2015\Projects\Python config\Python config\pythonConfig\pythonConfig.py", line 79, in toString if komentar[v[2]] in globals(): KeyError: 3 Press any key to continue . . .kaj je narobe sem poskusil ugotoviti s
print (komentar[0] in globals())pa mi napiše enako napako
Spremenljivke pa imam komentar={0: '00', 1: '01', 2: '02'} in value={'a': ['b', 'c', 1], 'a2': ['b2', 'c2', 2], 'a3': ['b3', 'c3', 3]}
- spremenil: filips ()
BigWhale ::
A lahko posljes kodo preden jo pozenes skozi code obfuscator?
Tako bo koda malo lazje berljiva.
Tako bo koda malo lazje berljiva.
Zgodovina sprememb…
- spremenil: BigWhale ()
filips ::
Koda:
import os
import os.path
global classShow
global otherShow
global stevilo
global komentar
global status
global status_message
global value
global file
global string
stevilo=0
status=1
value={}
string=''
komentar={}
def toString(className='',addclass='',addnoclass=''):
global status
global string
global komentar
global classShow
global otherShow
global value
if status!=0:
if classShow=='' or otherShow=='':
status_message=language.showClassShowOther
status=0
if classShow==1:
string += "class "+className+''':
'''
if komentar!='':
string += '#'+komentar[0]+"\n\t"
for k, v in value.items():
if(v[1] == ''):
string += 'public '+k+"='"+v[0]+'''"
'''
else:
string += 'public '+k+"='"+v[0]+'" #'+v[1]+'''
'''
print (v[2]) #zbriši
if komentar[v[2]] in globals():
string += '''
#'''+komentar[v[2]]+'''
'''
if addclas!='':
string +='''
'''+addclass+'''
'''
string +='''
'''
if otherShow==1:
if komentar[0] in globals():
string += '#'+komentar[0]+''
for k, v in value.items():
if v['1'] == '':
string += '''
'''+k+'="'+v[0]+'"'
else:
string += '''
'''+k+'="'+v[0]+'" #'.v[1]
if komentar[v[2]] in globals():
string += '''
#'''+komentar[v[2]]+''
if addnoclass!='':
string +='''
'''+addnoclass+''
return string
Tabulatorji mi ne primejo
import os
import os.path
global classShow
global otherShow
global stevilo
global komentar
global status
global status_message
global value
global file
global string
stevilo=0
status=1
value={}
string=''
komentar={}
def toString(className='',addclass='',addnoclass=''):
global status
global string
global komentar
global classShow
global otherShow
global value
if status!=0:
if classShow=='' or otherShow=='':
status_message=language.showClassShowOther
status=0
if classShow==1:
string += "class "+className+''':
'''
if komentar!='':
string += '#'+komentar[0]+"\n\t"
for k, v in value.items():
if(v[1] == ''):
string += 'public '+k+"='"+v[0]+'''"
'''
else:
string += 'public '+k+"='"+v[0]+'" #'+v[1]+'''
'''
print (v[2]) #zbriši
if komentar[v[2]] in globals():
string += '''
#'''+komentar[v[2]]+'''
'''
if addclas!='':
string +='''
'''+addclass+'''
'''
string +='''
'''
if otherShow==1:
if komentar[0] in globals():
string += '#'+komentar[0]+''
for k, v in value.items():
if v['1'] == '':
string += '''
'''+k+'="'+v[0]+'"'
else:
string += '''
'''+k+'="'+v[0]+'" #'.v[1]
if komentar[v[2]] in globals():
string += '''
#'''+komentar[v[2]]+''
if addnoclass!='':
string +='''
'''+addnoclass+''
return string
Tabulatorji mi ne primejo
Zgodovina sprememb…
- spremenil: filips ()
Roadkill ::
Za štart spremeni kodo, da ne boš uporabljal globalov. Ker ne veš čemu so namenjeni.
Lahko tudi probaš razložit kaj naj bi koda počela, ker se tele zmešnjave nikomur ne ljubi brat.
Lahko tudi probaš razložit kaj naj bi koda počela, ker se tele zmešnjave nikomur ne ljubi brat.
Ü
hruske ::
if komentar[v[2]] in globals():
Tule ima v[2] vrednost 3, ampak ta vrednost kot key ni v dictu komentar.
Samo ... a ta moj odgovor razumeš bolj, kot mi tvojo kodo?
Namreč ... slogovno je tvoja koda grozno neberljiva. Poglej si kak pylint ali flake8, ki ti povesta kako lahko svojo kodo približaš standardom, tako da jo bo znal še kdo kdaj prebrati.
Kalkulator nove omrežnine 2024 - https://omreznina.karlas.si/Kalkulator
Zgodovina sprememb…
- spremenilo: hruske ()
Gandalfar ::
# -*- coding: utf-8 -*- import os import os.path global classShow global otherShow global stevilo global komentar global status global status_message global value global file global string stevilo=0 status=1 value={} string='' komentar={} def toString(className='',addclass='',addnoclass=''): global status global string global komentar global classShow global otherShow global value if status != 0: if not classShow or not otherShow: status_message = language.showClassShowOther status = 0 else if classShow == 1: string += "class {}:\n".format(className) if komentar: string += '#{}\n\t'.format(komentar[0]) for k, v in value.items(): if (v[1] == ''): string += 'public {}={}\n'.format(k, v[0]) else: string += 'public {}={} #{}\n'.format(k, v[0], v[1]) if v[2] in komentar and komentar[v[2]] in globals(): string += "\n#".format(komentar[v[2]]) # itd..
Toliko, da se lahko znebiš teh ''': https://mkaz.tech/python-string-format....
filips ::
Sem popravil kodo, pa mi še vedno ne dela:
Popravil sem if stavek, ki mi dela težave:
def toString(className='',addclass='',addnoclass=''): '''change to type string''' global status global string global komentar global classShow global otherShow global value if status!=0: if classShow=='' or otherShow=='': status_message=language.showClassShowOther status=0 else: if classShow==1: string += "class {}:\n ".format(className) if komentar!='': string +="#{}\n ".format(komentar[0]) for k, v in value.items(): if(v[1] == ''): string += "global {}\n {}='{}'\n ".format(k,k,v[0]) else: string += "global {}\n {}='{}' #{}\n ".format(k,k,v[0],v[1]) try: komentar[v[2]] except NameError: komentar[v[2]]=None if komentar[v[2]] is None: pass else: string += "\n #{}\n ".format(komentar[v[2]]) if addclas!='': string +="\n {}\n ".format(addclass) string +="\n" if otherShow==1:#tu sem ostal if komentar[0] in globals(): string += "#{}".format(komentar[0]) for k, v in value.items(): if v['1'] == '': string += "\n {}='{}".format(k,v[0]) else: string += "\n {}='{} #{}".format(k,v[0],v[1]) try: komentar[v[2]] except NameError: komentar[v[2]]=None if komentar[v[2]] is None: pass else: string += "\n#{}".format(komentar[v[2]]) if addnoclass!='': string += "\n{}".format(addnoclass) return string
Popravil sem if stavek, ki mi dela težave:
try: komentar[v[2]] except NameError: komentar[v[2]]=None if komentar[v[2]] is None: pass else: string += "\n#{}".format(komentar[v[2]])tukaj želim preveriti, če komentar[v[2]] obstaja, pa mine dela
hruske ::
Kdaj ti Python interpreter vrže NameError in kdaj KeyError?
Kalkulator nove omrežnine 2024 - https://omreznina.karlas.si/Kalkulator
filips ::
V tistem if stavku mi python vrže to:
Traceback (most recent call last): File "C:\Users\Miha\documents\visual studio 2015\Projects\Python config\Python config\pythonConfig\pythonConfig.py", line 126, in <module> toString('className','addclass','addnoclass') File "C:\Users\Miha\documents\visual studio 2015\Projects\Python config\Python config\pythonConfig\pythonConfig.py", line 83, in toString komentar[v[2]] KeyError: 3 Press any key to continue . . .
hruske ::
Zakaj potem loviš NameError?
try: komentar[v[2]] except NameError: komentar[v[2]]=None
Kalkulator nove omrežnine 2024 - https://omreznina.karlas.si/Kalkulator
filips ::
KeyError sem zdaj popravil.
Zdaj imam to kodo:
S funkcijo toString bi rad da mi vrne tole:
Odgovor prosim čim prej
Zdaj imam to kodo:
def toString(className='',addclass='',addnoclass=''): #popravi vrstni red izpisovanja '''change to type string''' global status global string global komentar global classShow global otherShow global value if status!=0: if classShow=='' or otherShow=='': status_message=language.showClassShowOther status=0 else: if classShow==1: string += "class {}:\n ".format(className) try: komentar[0] except KeyError: komentar[0]=None if komentar[0] is None: pass else: string +="#{}\n ".format(komentar[0]) for k, v in value.items(): if(v[1] == ''): string += "global {}\n {} = '{}'\n ".format(k,k,v[0]) else: string += "global {}\n {} = '{}' #{}\n ".format(k,k,v[0],v[1]) try: komentar[v[2]] except KeyError: komentar[v[2]]=None if komentar[v[2]] is None: pass else: string += "\n #{}\n ".format(komentar[v[2]]) if addclass!='': string +="\n {}\n ".format(addclass) string +="\n" if otherShow==1: try: komentar[0] except KeyError: komentar[0]=None if komentar[0] is None: pass else: string += "#{}".format(komentar[0]) for k, v in value.items(): if v[1] == '': string += "\n{} = '{}'".format(k,v[0]) else: string += "\n{} = '{}' #{}".format(k,v[0],v[1]) try: komentar[v[2]] except KeyError: komentar[v[2]]=None if komentar[v[2]] is None: pass else: string += "\n\n#{}".format(komentar[v[2]]) if addnoclass!='': string += "\n{}".format(addnoclass) return stringSpremenljivke imam value={'a': ['b', 'c', 1], 'a2': ['b2', 'c2', 2], 'a3': ['b3', 'c3', 3]} in komentar={0: '00', 1: '01', 2: '02', 3: None}
S funkcijo toString bi rad da mi vrne tole:
class className:\n #00\n global a\n a = 'b' #c\n \n #01\n global a2\n a2 = 'b2' #c2\n \n #02\n global a3\n a3 = 'b3' #c3\n \n addclass\n \n\n#00\na = 'b' #c\n#01\na2 = 'b2' #c2\n#02\na3 = 'b3' #c3\n\naddnoclasstorej bi napisalo:
class className: #00 global a a = 'b' #c #01 global a2 a2 = 'b2' #c2 #02 global a3 a3 = 'b3' #c3 addclass #00 a = 'b' #c #01 a2 = 'b2' #c2 #02 a3 = 'b3' #c3 addnoclassče pa zaženem to kodo pa mi napiše s čisto premešanim vrstnim redom kot je:
class className: #00 global a3 a3 = 'b3' #c3 global a2 a2 = 'b2' #c2 #02 global a a = 'b' #c #01 addclass #00 a3 = 'b3' #c3 a2 = 'b2' #c2 #02 a = 'b' #c #01 addnoclasskaj naj naredim, da bo napisalo, tako kot bi jaz želel?
Odgovor prosim čim prej
Zgodovina sprememb…
- spremenil: filips ()
filips ::
Kako bi naredil da bi vrnilo to v pravem vrstnem redu
Prosim za čimprejšnji odgovor
Prosim za čimprejšnji odgovor
Zgodovina sprememb…
- spremenil: filips ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Slo-Tech userscriptsOddelek: Izdelava spletišč | 5195 (2647) | jype |
» | Python končnica datotekeOddelek: Programiranje | 1111 (1026) | filips |
» | Python napaka: IndentationError: unindent does not match any outer indentation levelOddelek: Programiranje | 792 (722) | jan_g |
» | [Java]kompailiranje iz cmdOddelek: Programiranje | 1314 (1038) | ragezor |
» | [C++] for {}Oddelek: Programiranje | 1719 (1413) | Gundolf |