J'accepte deux chaînes word1
et word2
, via une ligne de commande qui ne doit contenir que des alphabets.Les arguments de ligne de commande Python en classe ne fonctionnent pas
La fonction check_conditions
s'assurera que les chaînes sont pour les alphabets seulement.
Lorsque j'exécute ce programme sous python myprogram.py 'word1' 'word2'
, il ne montre rien, aucune erreur, aucune sortie. Lorsque j'exécute ce programme sans utiliser de classe, cela fonctionne comme une exception.
class FindWinner:
def __init__(self, word1, word2):
self.word1 = word1
self.word2 = word2
def check_conditions(self):
special_chars = set('[[email protected]#$%^&*.-()_+{}":;\']+$')
if special_chars.intersection(self.word1) or special_chars.intersection(self.word1) or (len(self.word1) != len(self.word2)
or ('no' in self.word1) or ('no' in self.word2)):
print('Invalid string.')
else:
print("String is valid")
print(list(self.word1))
print(list(self.word2))
def main():
parser = argparse.ArgumentParser()
parser.add_argument("word1", help="First word")
parser.add_argument("word2", help="Second word")
args = parser.parse_args()
c1 = FindWinner(args.number1, args.number2)
c1.check_conditions()
Que manque-t-il ici?
EDIT I Missed appeler main()
if __name__ == "__main__":
main()
Maintenant, je reçois une autre erreur:
if special_chars.intersection(self.word1) or special_chars.intersection(self.word1) or (len(self.word1) != len(self.word2) or ('no' in self.word1) or ('no' in self.word2)):
Quand je lance python myprogram.py my_string my_long_string
, il me donne string is valid
sortie (autre partie). Conformément à la condition ci-dessus, les deux chaînes ne doivent pas contenir de caractère spécial & len devrait être le même.
Appelez-vous 'main()' n'importe où? – Will