J'ai une fonction définie par l'utilisateur qui prend en entrée la taille de table (m). J'implémente une liste vide (de paires [clé, nombre], essentiellement un tableau avec deux champs) de cette taille et utilise le hachage linéaire pour insérer des nombres aléatoires générés dans la liste. Donc disons que le premier nombre aléatoire (k) est 20 et que la longueur de la liste (m) est 9, la fonction de hachage (h0 = k% m) retournera 2 (comme c'est le reste quand 20 est divisé par 9). Si cette cellule est vide, je veux insérer la valeur clé (k) dans le premier champ et 1 (nombre de sondes) dans le deuxième champ. Si cette cellule n'est pas vide, je veux incrémenter l'index en utilisant la fonction de hachage (h0 = (h0 + i)% m) jusqu'à ce qu'une cellule vide soit trouvée et insérée ici. Je veux retourner la liste résultante. J'ai une déclaration de retour dans ma fonction et la documentation que j'ai lue indique assigner une nouvelle valeur quand j'appelle la fonction et en utilisant une instruction d'impression devrait fonctionner. J'utilise l'édition communautaire de PyCharm. Mon IDE pourrait-il être le problème? (Ci-dessous est mon code)Ma fonction python ne retourne pas de valeur
import random
def linear(m):
hTable = [[None, None] for j in range (m)]
for n in range (1100):
k = random.randint(1,10000)
for i in range(len(hTable)):
for j in range(len(hTable[i])):
h0 = k % m
if hTable[h0] == [None,None]:
hTable[h0][0] = k
hTable[h0][1] = 1
else:
while hTable[h0] != [None, None]:
hTable[h0][1] += 1
h0 = (h0 + i)%m
else:
hTable[h0][0] = k
hTable[h0][1] = 1
return hTable
hash = linear(1223)
print(hash)
J'ai oublié de mentionner quand je cours le manuscrit, je ne reçois aucune erreur de retour, mais je n'obtiens pas non plus la production désirée. Ma seule sortie est "Processus terminé avec le code de sortie 0" – Noelle
Avez-vous simplement oublié d'appeler * votre fonction? Quelque chose comme 'linear (5)'. – ImportanceOfBeingErnest
Vous effectuez une fonction len sur un objet de type None dans la ligne: 'pour j dans range (len (hTable [i])):'. Vouliez-vous configurer hTable comme un tableau à deux dimensions à la place? Si vous voulez que hTable soit bidimensionnel, vous pouvez faire: 'hTable = [[Aucun pour x dans la plage (largeur)] pour y dans la plage (hauteur)]'. J'espère que cela t'aides. – BKovac