Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/09/2019, à 11:48

MartinGouv

Python : erreur (need more than 1 value to unpack)

Bonjour j'essaie de réaliser un script pour un challenge dans lequel je dois envoyer certaines informations a un bot mais voila j'ai un souci :

Dans mon script je dois envoyer !ep1 au bot et il doit me répondre à ce format : (nb1/nb2)

Voici mon code je suis encore débutant et je ne comprends pas encore toutes mes erreurs :(

Le code erreur est : need more than 1 value to unpack

Voici mon code :

import math, socket
from time import sleep


def returnCollege(n1, n2):
    step1 = math.sqrt(n1)
    step2 = step1*n2
    stepfinal = round(step2, 2)
    return stepfinal


server = "irc.root-me.org"
channel = "#root-me_challenge"
port = "6667"
botnick = "MartinGouv"
sleep(1)
irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sleep(1)
print("Je me connecte au seveur :" + server)
sleep(1)
irc.connect((server, 6667))
sleep(1)
irc.send("USER " + botnick + " " + botnick + "  " + botnick + " C'est fun ce bot !\n")
sleep(1)
irc.send("NICK " + botnick + "\n")
sleep(1)
irc.send("JOIN " + channel + "\n")
irc.send("PRIVMSG candy !ep1\r\n")


while True:
    text = irc.recv(2040)
    print(text)
    if text.find("PING") !=1:
        irc.send('PONG ' + text.split()[1] + '\r\n')                               
    nb1, nb2 = text.split("/")             <-------- L'erreur se situe ici
    retour = returnCollege(nb1, nb2)
    irc.send("PRIVMSG Candy !ep1 -rep " + retour + "\r\n")

Merci de m'aider car j'ai essayé de chercher sur différents forums mais impossible de trouver la solution

Dernière modification par MartinGouv (Le 08/09/2019, à 11:51)

Hors ligne

#2 Le 08/09/2019, à 12:13

pingouinux

Re : Python : erreur (need more than 1 value to unpack)

Bonjour,
Dans la boucle while, quel est le résultat de

    print(text)

Tu peux ajouter aussi

    print(type(text))

Hors ligne

#3 Le 08/09/2019, à 12:20

MartinGouv

Re : Python : erreur (need more than 1 value to unpack)

pingouinux a écrit :

Bonjour,
Dans la boucle while, quel est le résultat de

    print(text)

Tu peux ajouter aussi

    print(type(text))

Le résultat c'est la réponse du serveur enfin... ce qu'il m'envoie.



@Vobul je ne vois pas ce que tu veux dire que devrais-je faire remplacer par une autre commande ? Laquelle ?

Merci a vous pour votre aide

Hors ligne

#4 Le 08/09/2019, à 12:36

pingouinux

Re : Python : erreur (need more than 1 value to unpack)

Si tu ne donnes pas le retour des commandes que je t'indique en #2, je ne peux rien faire pour toi.

    nb1, nb2 = text.split("/")             <-------- L'erreur se situe ici

Cette commande est correcte si text contient un et un seul "/", et est de type str.

Hors ligne

#5 Le 08/09/2019, à 12:45

MartinGouv

Re : Python : erreur (need more than 1 value to unpack)

pingouinux a écrit :

Si tu ne donnes pas le retour des commandes que je t'indique en #2, je ne peux rien faire pour toi.

    nb1, nb2 = text.split("/")             <-------- L'erreur se situe ici

Cette commande est correcte si text contient un et un seul "/", et est de type str.



Je pense avoir compris mon erreur en fait comme text est le retour du serveur le .split essaie de le scinder avec '/' mais n'y arrive pas
Mais comment formuler en ligne de code scinder <nombre1>/<nombre2> a l'aide du '/'

Merci pour ta réponse voici le résultat de while text :

:irc.hackerzvoice.net NOTICE Auth :*** Looking up your hostname...
:irc.hackerzvoice.net NOTICE Auth :*** Found your hostname (185.185-64-87.adsl-dyn.isp.belgacom.be)
Traceback (most recent call last):
  File "C:/Users/marti/Desktop/Tout mes projets de dvellopement/Projets/defi.py", line 36, in <module>
:irc.hackerzvoice.net NOTICE Auth :Welcome to HackerzVoice!
    nb1, nb2 = text.split("/")
:irc.hackerzvoice.net 001 MartinGouv :Welcome to the HackerzVoice IRC Network MartinGouv!MartinGouv@185.185-64-87.adsl-dyn.isp.belgacom.be
ValueError: need more than 1 value to unpack
:irc.hackerzvoice.net 002 MartinGouv :Your host is irc.hackerzvoice.net, running version InspIRCd-2.0
:irc.hackerzvoice.net 003 MartinGouv :This server was created 19:52:09 Aug 12 2013
:irc.hackerzvoice.net 004 MartinGouv irc.hackerzvoice.net InspIRCd-2.0 BHIRSWcghiorswx FLMNPRSYabcefhijklmnopqrstvz FLYabefhjkloqv
:irc.hackerzvoice.net 005 MartinGouv AWAYLEN=200 CALLERID=g CASEMAPPING=rfc1459 CHANMODES=be,k,FLfjl,MNPRScimnprstz CHANNELLEN=64 CHANTYPES=# CHARSET=ascii ELIST=MU EXCEPTS=e EXTBAN=,NRSUcjmz FNC KICKLEN=255 MAP :are supported by this server
:irc.hackerzvoice.net 005 MartinGouv MAXBANS=60 MAXCHANNELS=20 MAXPARA=32 MAXTARGETS=20 MODES=20 NETWORK=HackerzVoice NICKLEN=31 OVERRIDE PREFIX=(Yqaohv)!~&@%+ SECURELIST SSL=0.0.0.0:6697 STARTTLS STATUSMSG=!~&@%+ :are supported by this server
:irc.hackerzvoice.net 005 MartinGouv TOPICLEN=307 USERIP VBANLIST WALLCHOPS WALLVOICES :are supported by this server
:irc.hackerzvoice.net 042 MartinGouv 959ABIZK6 :your unique ID
:irc.hackerzvoice.net 375 MartinGouv :irc.hackerzvoice.net message of the day
:irc.hackerzvoice.net 372 MartinGouv :-     ██████████     ╻ ╻┏━┓┏━╸╻┏ ┏━╸┏━┓╺━┓╻ ╻┏━┓╻┏━╸┏━╸
:irc.hackerzvoice.net 372 MartinGouv :-   ████████    ██   ┣━┫┣━┫┃  ┣┻┓┣╸ ┣┳┛┏━┛┃┏┛┃ ┃┃┃  ┣╸ 
:irc.hackerzvoice.net 372 MartinGouv :-   ██    ██    ██   ╹ ╹╹ ╹┗━╸╹ ╹┗━╸╹┗╸┗━╸┗┛ ┗━┛╹┗━╸┗━╸
:irc.hackerzvoice.net 372 MartinGouv :-   ██████████████   

Process finished with exit code 1

Hors ligne

#6 Le 08/09/2019, à 13:18

pingouinux

Re : Python : erreur (need more than 1 value to unpack)

Tu n'as toujours pas répondu à ma demande, mais si par hasard text était de type bytes, il faudrait faire :

    nb1, nb2 = text.split(b"/")

Hors ligne

#7 Le 08/09/2019, à 13:31

MartinGouv

Re : Python : erreur (need more than 1 value to unpack)

pingouinux a écrit :

Tu n'as toujours pas répondu à ma demande, mais si par hasard text était de type bytes, il faudrait faire :

    nb1, nb2 = text.split(b"/")

Je ne comprends ta demande ? Que me demandes tu de faire je ne comprends pas je t'ai montré ce que print(text) faisait c'est ce que tu me demandais nan ?

J'aimerais scinder 2 nombres avec '/' comment faire ?

Hors ligne

#8 Le 08/09/2019, à 13:49

pingouinux

Re : Python : erreur (need more than 1 value to unpack)

Je ne vois pas le résultat de print(text) dans les sorties que tu montres.
On va essayer de faire autrement.
Tu remplaces

    nb1, nb2 = text.split("/")

par

    try: nb1, nb2 = text.split("/")
    except:
        print("Début des sorties")
        print(text)
        print(type(text))
        print("Fin des sorties")
        raise

et tu montres tout ce qui apparaît entre le début et la fin des sorties.

Hors ligne

#9 Le 08/09/2019, à 14:07

MartinGouv

Re : Python : erreur (need more than 1 value to unpack)

pingouinux a écrit :

Je ne vois pas le résultat de print(text) dans les sorties que tu montres.
On va essayer de faire autrement.
Tu remplaces

    nb1, nb2 = text.split("/")

par

    try: nb1, nb2 = text.split("/")
    except:
        print("Début des sorties")
        print(text)
        print(type(text))
        print("Fin des sorties")
        raise

et tu montres tout ce qui apparaît entre le début et la fin des sorties.



Voila le résultat :

Je me connecte au seveur :irc.root-me.org
:irc.hackerzvoice.net NOTICE Auth :*** Looking up your hostname...
:irc.hackerzvoice.net NOTICE Auth :*** Found your hostname (185.185-64-87.adsl-dyn.isp.belgacom.be) -- cached
:irc.hackerzvoice.net NOTICE Auth :Welcome to HackerzVoice!
:irc.hackerzvoice.net 001 MartinGouv :Welcome to the HackerzVoice IRC Network MartinGouv!MartinGouv@185.185-64-87.adsl-dyn.isp.belgacom.be
:irc.hackerzvoice.net 002 MartinGouv :Your host is irc.hackerzvoice.net, running version InspIRCd-2.0
:irc.hackerzvoice.net 003 MartinGouv :This server was created 19:52:09 Aug 12 2013
:irc.hackerzvoice.net 004 MartinGouv irc.hackerzvoice.net InspIRCd-2.0 BHIRSWcghiorswx FLMNPRSYabcefhijklmnopqrstvz FLYabefhjkloqv
:irc.hackerzvoice.net 005 MartinGouv AWAYLEN=200 CALLERID=g CASEMAPPING=rfc1459 CHANMODES=be,k,FLfjl,MNPRScimnprstz CHANNELLEN=64 CHANTYPES=# CHARSET=ascii ELIST=MU EXCEPTS=e EXTBAN=,NRSUcjmz FNC KICKLEN=255 MAP :are supported by this server
:irc.hackerzvoice.net 005 MartinGouv MAXBANS=60 MAXCHANNELS=20 MAXPARA=32 MAXTARGETS=20 MODES=20 NETWORK=HackerzVoice NICKLEN=31 OVERRIDE PREFIX=(Yqaohv)!~&@%+ SECURELIST SSL=0.0.0.0:6697 STARTTLS STATUSMSG=!~&@%+ :are supported by this server
:irc.hackerzvoice.net 005 MartinGouv TOPICLEN=307 USERIP VBANLIST WALLCHOPS WALLVOICES :are supported by this server
:irc.hackerzvoice.net 042 MartinGouv 959ABIZOO :your unique ID
:irc.hackerzvoice.net 375 MartinGouv :irc.hackerzvoice.net message of the day
:irc.hackerzvoice.net 372 MartinGouv :-     ██████████     ╻ ╻┏━┓┏━╸╻┏ ┏━╸┏━┓╺━┓╻ ╻┏━┓╻┏━╸┏━╸
:irc.hackerzvoice.net 372 MartinGouv :-   ████████    ██   ┣━┫┣━┫┃  ┣┻┓┣╸ ┣┳┛┏━┛┃┏┛┃ ┃┃┃  ┣╸ 
:irc.hackerzvoice.net 372 MartinGouv :-   ██    ██    ██   ╹ ╹╹ ╹┗━╸╹ ╹┗━╸╹┗╸┗━╸┗┛ ┗━┛╹┗━╸┗━╸
:irc.hackerzvoice.net 372 MartinGouv :-   ███████████
Debut des sorties
:irc.hackerzvoice.net NOTICE Auth :*** Looking up your hostname...
:irc.hackerzvoice.net NOTICE Auth :*** Found your hostname (185.185-64-87.adsl-dyn.isp.belgacom.be) -- cached
:irc.hackerzvoice.net NOTICE Auth :Welcome to HackerzVoice!
:irc.hackerzvoice.net 001 MartinGouv :Welcome to the HackerzVoice IRC Network MartinGouv!MartinGouv@185.185-64-87.adsl-dyn.isp.belgacom.be
:irc.hackerzvoice.net 002 MartinGouv :Your host is irc.hackerzvoice.net, running version InspIRCd-2.0
:irc.hackerzvoice.net 003 MartinGouv :This server was created 19:52:09 Aug 12 2013
:irc.hackerzvoice.net 004 MartinGouv irc.hackerzvoice.net InspIRCd-2.0 BHIRSWcghiorswx FLMNPRSYabcefhijklmnopqrstvz FLYabefhjkloqv
:irc.hackerzvoice.net 005 MartinGouv AWAYLEN=200 CALLERID=g CASEMAPPING=rfc1459 CHANMODES=be,k,FLfjl,MNPRScimnprstz CHANNELLEN=64 CHANTYPES=# CHARSET=ascii ELIST=MU EXCEPTS=e EXTBAN=,NRSUcjmz FNC KICKLEN=255 MAP :are supported by this server
:irc.hackerzvoice.net 005 MartinGouv MAXBANS=60 MAXCHANNELS=20 MAXPARA=32 MAXTARGETS=20 MODES=20 NETWORK=HackerzVoice NICKLEN=31 OVERRIDE PREFIX=(Yqaohv)!~&@%+ SECURELIST SSL=0.0.0.0:6697 STARTTLS STATUSMSG=!~&@%+ :are supported by this server
:irc.hackerzvoice.net 005 MartinGouv TOPICLEN=307 USERIP VBANLIST WALLCHOPS WALLVOICES :are supported by this server
:irc.hackerzvoice.net 042 MartinGouv 959ABIZOO :your unique ID
:irc.hackerzvoice.net 375 MartinGouv :irc.hackerzvoice.net message of the day
:irc.hackerzvoice.net 372 MartinGouv :-     ██████████     ╻ ╻┏━┓┏━╸╻┏ ┏━╸┏━┓╺━┓╻ ╻┏━┓╻┏━╸┏━╸
:irc.hackerzvoice.net 372 MartinGouv :-   ████████    ██   ┣━┫┣━┫┃  ┣┻┓┣╸ ┣┳┛┏━┛┃┏┛┃ ┃┃┃  ┣╸ 
:irc.hackerzvoice.net 372 MartinGouv :-   ██    ██    ██   ╹ ╹╹ ╹┗━╸╹ ╹┗━╸╹┗╸┗━╸┗┛ ┗━┛╹┗━╸┗━╸
:irc.hackerzvoice.net 372 MartinGouv :-   ███████████
<type 'str'>
Fin des sorties
Traceback (most recent call last):
  File "C:/Users/marti/Desktop/Tout mes projets de dvellopement/Projets/defi.py", line 37, in <module>
    nb1, nb2 = text.split("/")
ValueError: need more than 1 value to unpack

Process finished with exit code 1


J'espère que c'est ce que tu attendais ! big_smile

Hors ligne

#10 Le 08/09/2019, à 14:36

Roschan

Re : Python : erreur (need more than 1 value to unpack)

numbers = text.split('/')
if len(numbers) == 2:
    retour = returnCollege(numbers[0], numbers[1])
    irc.send("PRIVMSG Candy !ep1 -rep " + retour + "\r\n")
else:
    print(text, "n'est pas de la forme 'nb1/nb2'")

Hors ligne

#11 Le 08/09/2019, à 14:44

MartinGouv

Re : Python : erreur (need more than 1 value to unpack)

Roschan a écrit :
numbers = text.split('/')
if len(numbers) == 2:
    retour = returnCollege(numbers[0], numbers[1])
    irc.send("PRIVMSG Candy !ep1 -rep " + retour + "\r\n")
else:
    print(text, "n'est pas de la forme 'nb1/nb2'")

Merci pour ta réponse mais voila le problème la variable numbers contient :

[':MartinGouv!MartinGouv@hzv-pia.7ji.a61t8n.IP JOIN :#root-me_challenge\r\n:irc.hackerzvoice.net 332 MartinGouv #root-me_challenge :pour parler des challenges, to chat about challs : #root-me | bots : Candy (tapez !help) et Pown3dBot -- no flood ! | bugs : contactez un admin\r\n:irc.hackerzvoice.net 333 MartinGouv #root-me_challenge Arod 1431865208\r\n:irc.hackerzvoice.net 353 MartinGouv = #root-me_challenge :zc0nf ArnC Pown3dBot baud123 papanireal MoziM Kattegaut pintoo BusyR MartinGouv @sambecks @Candy zTeeed ~g0uZ \r\n:irc.hackerzvoice.net 366 MartinGouv #root-me_challenge :End of ', 'NAMES list.\r\n']

Donc toujours pas bon sad

Hors ligne

#12 Le 08/09/2019, à 14:47

MartinGouv

Re : Python : erreur (need more than 1 value to unpack)

Il faudrait faire en code mais je ne sais pas comment formuler :

if text.find(nombre/nombre):
    numbers = text.split('/')

Dernière modification par MartinGouv (Le 08/09/2019, à 14:48)

Hors ligne

#13 Le 08/09/2019, à 14:47

pingouinux

Re : Python : erreur (need more than 1 value to unpack)

Au temps pour moi, c'est bien ce que tu avais montré en #6.
La variable text est bien de type str, ce qui est correct, mais contient tout un baratin qui n'a rien à voir avec ce que tu attends.
C'est cette commande qui ne retourne pas le résultat que tu souhaites.

    text = irc.recv(2040)

Hors ligne

#14 Le 08/09/2019, à 14:49

MartinGouv

Re : Python : erreur (need more than 1 value to unpack)

pingouinux a écrit :

Au temps pour moi, c'est bien ce que tu avais montré en #6.
La variable text est bien de type str, ce qui est correct, mais contient tout un baratin qui n'a rien à voir avec ce que tu attends.
C'est cette commande qui ne retourne pas le résultat que tu souhaites.

    text = irc.recv(2040)

Mais comment faire pour intercepter les nombres alors ?

Hors ligne

#15 Le 08/09/2019, à 15:12

pingouinux

Re : Python : erreur (need more than 1 value to unpack)

MartinGouv #1 a écrit :

Dans mon script je dois envoyer !ep1 au bot et il doit me répondre à ce format : (nb1/nb2)

MartinGouv #15 a écrit :

Mais comment faire pour intercepter les nombres alors ?

Aucune idée.La chaîne que tu reçois n'est pas dans le format prévu, et il faut t'adresser à la personne ou au site qui t'a proposé le challenge.

Hors ligne

#16 Le 08/09/2019, à 16:07

MartinGouv

Re : Python : erreur (need more than 1 value to unpack)

pingouinux a écrit :
MartinGouv #1 a écrit :

Dans mon script je dois envoyer !ep1 au bot et il doit me répondre à ce format : (nb1/nb2)

MartinGouv #15 a écrit :

Mais comment faire pour intercepter les nombres alors ?

Aucune idée.La chaîne que tu reçois n'est pas dans le format prévu, et il faut t'adresser à la personne ou au site qui t'a proposé le challenge.



Voila j'ai réussi a intercepter la bonne phrase mais il faut couper la phrase pour avoir les nombres voici la phrase que j'ai eue

:Candy!Candy@root-me.org PRIVMSG MartinGouv :883 / 1668

Merci pour vos réponses

Hors ligne

#17 Le 08/09/2019, à 18:32

pingouinux

Re : Python : erreur (need more than 1 value to unpack)

Si text contient

:Candy!Candy@root-me.org PRIVMSG MartinGouv :883 / 1668
nb1, nb2 = text.split(':')[-1].split('/')

nb1, nb2 sont alors de type str, pouvant inclure des espaces au début ou à la fin. À toi d'y faire le ménage ou de les convertir en entiers.

Hors ligne