我是Python的初学者。为什么调用此函数时会出现此错误? 我的函数搜索第一个尚未发现的技术(在dict_tech中)(在dict_techdisc中)。然后,如果您拥有所需数量的技术点数,它会调用一个提示,询问您是否希望发现该技术。如果答案是“是”,它将用所需的数量减去您拥有的技术点数,并使用dict_TECH的相同键更新dict_techdisc。如果答案是“否”,它将停止重新搜索
dict_techdisc = {}
dict_tech = {"A":"Première lettre de l'Alphabet, Première des Voyelles.'a': Symbole de l'Are et de l'Attométrie.'A': Symbole de l'Ampère, Ancien Symbole de l'Argon.(Musique) 'A' La, dans le système de notation anglo-saxonne et germanique.'Å': Symbole de l'Angström.'À': Bombe Nucléaire de Fission."}
dict_cout = {"A":6,"À(2)":11,"Abaca":1,"Abacule":1,"Abaisser (et ses dérivés)":13,"Abajoue":1,"Abandonner (et ses dérivés)":11,"Abaque":3,"Abasie":1}
def techachat(ptstech):
"""
Action servant à acheter une technologie pour un coût donné.
"""
try:
for tech, val in dict_cout.items():
if tech in dict_cout.keys() and tech not in dict_tech.keys():
if int(val) < ptstech:
res = 0
requete = ""
while requete != "oui" or requete != "non":
requete = input(f"Veux-tu acheter la technologie {tech}? (Oui, Non)")
if requete == "Oui":
ptstech -= int(val)
res = ptstech
for tech2 in dict_tech:
if dict_tech.get(tech2) is not None:
dict_techdisc.update(dict_tech[tech2])
else:
continue
break
time.sleep(3)
print(f"Vous avez bien débloqué la technologie {tech} pour un coût de {val} points TECH.")
time.sleep(3)
print(f"Il vous reste {ptstech} points TECH.")
time.sleep(3)
print("Fin de la requête")
print(dict_techdisc)
return res, dict_techdisc
elif requete == "Non":
print("Fin de la requête.")
return
else:
print("Réponse non valide!")
continue
else:
print("Vous n'avez pas assez de points TECH pour pouvoir acheter la prochaine technologie!")
else:
continue
except:
print("Fin de la requête.")
这里是我使用它的地方:
from Lanfangist import *
import time
from AvrupaBody import *
from Acte1 import *
from Sauvegarde import *
#-----Modules au dessus
#-----Code en dessous
#aventurech1()
dict_tech = {"A":"Première lettre de l'Alphabet, Première des Voyelles.'a': Symbole de l'Are et de l'Attométrie.'A': Symbole de l'Ampère, Ancien Symbole de l'Argon.(Musique) 'A' La, dans le système de notation anglo-saxonne et germanique.'Å': Symbole de l'Angström.'À': Bombe Nucléaire de Fission."}
dict_cout = {"A":6,"À(2)":11,"Abaca":1,"Abacule":1,"Abaisser (et ses dérivés)":13,"Abajoue":1,"Abandonner (et ses dérivés)":11,"Abaque":3,"Abasie":1}
_ptstech = 50
_argent = 0
dict_techdisc = {}
_argent, dict_techdisc = techachat(_ptstech)
_ptstech = _argent
print(_ptstech)
print(dict_techdisc)
_argent, dict_techdisc = techachat(_ptstech)
_ptstech = _argent
print(_ptstech)
print(dict_techdisc)
下面是错误:
_argent, dict_techdisc = techachat(_ptstech)
TypeError: cannot unpack non-iterable NoneType object
如果您编写
_argent, dict_techdisc = techachat(_ptstech)
,这意味着您希望函数返回一个大小为2的列表或元组。但是,函数并不总是返回双元素iterable。当它返回None
时(在没有遇到返回语句时发生),将引发异常。就好像你在写x, y = None
。考虑用^ {< CD4> }块包围函数调用。相关问题 更多 >
编程相关推荐