Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Matrices

3 réponses
Avatar
Ju32700
Bonjour,
j'aurais besoin d'aide pour mon programme en Python s'il vous plait :

##def lignecomplete(M): # M est une matrice carrée d'ordre n
## # Si une des lignes est complète, le programme renvoie "Vrai"
## # Sinon, il renvoie "Faux"

Il faut que l'une des lignes soit uniquement rempli de 1 pour renvoyer "True"

Si je fais
>>lignecomplete([[1,1,1],[1,1,1]])
True

Sinon
>>lignecomplete([[1,1,0],[1,0,1]])
False

3 réponses

Avatar
Benoit Izac
Bonjour,
Le 06/03/2019 à 22:29, Ju a écrit dans le message
 :
j'aurais besoin d'aide pour mon programme en Python s'il vous plait :
##def lignecomplete(M): # M est une matrice carrée d'ordre n
## # Si une des lignes est complète, le programme renvoie "Vrai"
## # Sinon, il renvoie "Faux"
Il faut que l'une des lignes soit uniquement rempli de 1 pour renvoyer "True"
Si je fais
lignecomplete([[1,1,1],[1,1,1]])


True
Sinon
lignecomplete([[1,1,0],[1,0,1]])


False

Tu as oublié de poster le code que tu as essayé de faire et qui ne
fonctionne pas.
--
Benoit Izac
Avatar
Pierre Maurette
Ju32700 :
Bonjour,
j'aurais besoin d'aide pour mon programme en Python s'il vous plait :
##def lignecomplete(M): # M est une matrice carrée d'ordre n
## # Si une des lignes est complète, le programme renvoie "Vrai"
## # Sinon, il renvoie "Faux"
Il faut que l'une des lignes soit uniquement rempli de 1 pour renvoyer "True"
Si je fais
lignecomplete([[1,1,1],[1,1,1]])


True
Sinon
lignecomplete([[1,1,0],[1,0,1]])


False

J'imagine qu'il s'agit d'un exercice dans le cadre d'une formation.
L'énoncé devrait être être plus précis, ou plus explicite. Tel quel, il
semble qu'on doive renvoyer une chaîne, alors qu'un booléen est
d'évidence plus logique (LOL). Faut-il lire "Une des lignes au moins"
ou "Exactement une des lignes" ?
L'énoncé parle de "matrice carrée d'ordre n", les matrices de vos
exemples ne sont pas carrées.
A moins que je râte quelque chose, l'exercice n'est pas si facile que
ça.
Vous pouvez décortiquer ce code pour rédiger votre proposition:
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
def checkSquareMatrice(M, n):
return [len(x) == n for x in M] == n * [True]
def ligneCompleteStrict(M, n):
return (len([x for x in M if x == n * [1]]) == 1)
def ligneCompleteAuMoins(M, n):
return (len([x for x in M if x == n * [1]]) > 0)
for M in [ [[0,1,1],[1,1,0],[1,0]],
[[0,1,1],[1,1,0],[1,0,1]],
[[1,1,1],[1,1,0],[1,0,1]],
[[1,1,1],[1,1,1],[1,0,1]] ]:
lM = len(M)
if (checkSquareMatrice(M, lM)):
print ('Matrice: %s, taille: %s' % (M, lM))
print ('Un seul: %s' % ligneCompleteStrict(M, lM))
print ('Au moins un: %sn' % ligneCompleteAuMoins(M, lM))
else:
print ('Matrice: %s, NOT A "MATRICE"n' % M)
--
Pierre Maurette
Avatar
ast
Le 06/03/2019 à 22:29, Ju32700 a écrit :
Bonjour,
j'aurais besoin d'aide pour mon programme en Python s'il vous plait :
##def lignecomplete(M): # M est une matrice carrée d'ordre n
## # Si une des lignes est complète, le programme renvoie "Vrai"
## # Sinon, il renvoie "Faux"
Il faut que l'une des lignes soit uniquement rempli de 1 pour renvoyer "True"
Si je fais
lignecomplete([[1,1,1],[1,1,1]])


True
Sinon
lignecomplete([[1,1,0],[1,0,1]])


False

def lignecomplete(M):
for line in M:
if all([i==1 for i in line]):
return True
return False