2017-07-16 22 views
2

J'essaie de tester si la représentation décimale d'un certain nombre contient le chiffre 9 au moins deux fois, donc j'ai décidé de faire quelque chose comme ça:"Impossible de convertir 'int' objet en str implicitement" erreur (Python)

i=98759102 
string=str(i) 
if '9' in string.replace(9, '', 1): print("y") 
else: print("n") 

Mais Python répond toujours avec "TypeError: Impossible de convertir l'objet 'int' à str implicitement".

Qu'est-ce que je fais mal ici? Existe-t-il réellement une méthode plus intelligente pour détecter combien de fois un certain chiffre est contenu dans la représentation décimale d'un entier?

+2

'string.replace ('9', '', 1)' (note les guillemets simples autour de 9). En outre, il y a: 'string.count ('9')' –

+1

'str (i) .count ('9')> 1' –

Répondre

2

Votre problème est ici:

string.replace(9, '', 1) 

Vous devez faire 9 une chaîne littérale, plutôt que d'un nombre entier:

string.replace('9', '', 1) 

En ce qui concerne une meilleure façon de compter les occurrences de 9 dans votre chaîne, utiliser str.count():

>>> i = 98759102 
>>> string = str(i) 
>>> 
>>> if string.count('9') > 2: 
    print('yes') 
else: 
    print('no') 


no 
>>> 
1

Vous avez besoin de guillemets autour des neuf.