Je veux remplacer les valeurs dans la sortie par les noms, mais je n'ai aucune idée de la façon de le faire. Par exemple (cheese, eggs) au lieu de (1, 5). Je commence à apprendre le python et certaines des réponses sur d'autres sujets connexes que je ne comprends tout simplement pas.

def printPairs(arr, n, sum):     

for i in range(0, n):    
    for j in range(i + 1, n):    
        if (arr[i] + arr[j] <= sum):    
                print("(", arr[i],", ", arr[j],")", sep="")    

cheese = 1  
eggs = 5  
banana = 7  
apple = -1  
bread = 5 

arr = [1, 5, 7, -1, 5]      
n = len(arr)  
sum = 10      
printPairs(arr, n, sum) 

Production:

(1, 5)  
(1, 7)  
(1, -1)  
(1, 5)  
(5, -1)  
(5, 5)  
(7, -1)  
(-1, 5)  
0
Patrick Nijkamp 12 mars 2019 à 12:56

2 réponses

Meilleure réponse

En utilisant un dict:

dict_ = { 1 : 'cheese',
          5 : 'eggs',
          7 : 'banana',
         -1 : 'apple',
          6 : 'bread'
          }    

def printPairs(arr, n, sum):
   for i in range(0, n):
       for j in range(i + 1, n):
           if (arr[i] + arr[j] <= sum):
               print("(", dict_[arr[i]],", ", dict_[arr[j]],")", sep="")

arr = [1, 5, 7, -1, 6]
n = len(arr)
sum = 10
printPairs(arr, n, sum)

SORTIE :

(cheese, bread)
(cheese, banana)
(cheese, apple)
(cheese, bread)
(bread, apple)
(bread, bread)
(banana, apple)
(apple, bread)
1
DirtyBit 12 mars 2019 à 10:34

Puis-je recommander d'utiliser un dictionnaire:

pairs = { 1: 'cheese', 5: 'eggs' ...}  # for all the values

Modifiez ensuite la ligne d'impression en

 print("(", pairs[arr[i]],", ", pairs[arr[j]],")", sep="")
1
Carlos Gonzalez 12 mars 2019 à 10:02