0
votes

Je continue d'essayer d'exécuter ce programme sur Python, mais je continue à obtenir la même erreur d'opérande. Le code d'erreur provient de la 10ème ligne

Ce code ne fonctionne pas pour moi et je continue à obtenir une erreur de type opératoire non supportée. Le code d'erreur lit TypeError: type (s) d'opérande non pris en charge pour Sub: 'str' et 'str' sur la ligne 10

x1 = input(print("What is the x coordinate of the first circle: "))
y1 = input(print("What is the y coordinate of the first circle: "))
r1 = input(print("What is the radius of the first circle: " ))
x2 = input(print("What is the x coordinate of the second circle: "))
y2 = input(print("What is the y coordinate of the second circle: "))
r2 = input(print("What is the radius of the second circle: "))

import math
def distance(x1, y1, x2, y2):
    return math.sqrt(math.pow(x2 - x1, 2) +
            math.pow(y2 - y1, 2) * 1.0) 
print("%.6f"%distance(x1, y1, x2, y2)) 

if distance <= abs(r1 - r2):
    print("Circle 2 is inside of circle 1")
elif distance <= r1 + r2:
    print("Circle 2 overlaps circle 1")
else:
    print("Circle 2 does not overlap circle 1")


3 commentaires

Dupliqué possible de TypeError: type (s) d'opérande non pris en charge pour /: 'str 'et' str ', et TypeError : Type (s) d'opérande non pris en charge pour -: 'str' et 'str' in python et Comment puis-je lire les entrées sous forme de chiffres? .


La recherche avec le message d'erreur vous indique souvent dans la bonne direction.


Lorsque vous demandez à propos du code qui produit une exception, incluez toujours la traçabilité complète dans la question. Copiez la trace de la trace et la colle dans la question, puis le format comme code (sélectionnez-le et tapez ctrl-k)


3 Réponses :


2
votes

L'entrée reçoit une chaîne. Vous devez le convertir en un format de numéro. S'il vous plaît vérifier Comment puis-je analyser une chaîne à un float ou int?

De plus, lorsque vous comparez, vous devez appeler la fonction avec les paramètres. Je n'ai pas vérifié les mathématiques, mais je suppose que c'est ce que vous recherchez: xxx


1 commentaires

Merci! J'ai souffert de ce problème pendant un moment maintenant. Cela aide vraiment!



0
votes

Vous devez le mettre avec int () ou float () , comme indiqué ci-dessous

x1 = int (entrée (impression ("Quelle est la coordonnée x du premier cercle:")))

Si vous imprimez le type de variable que x1 est en faisant imprimer (type (x1)) Vous obtiendrez ce qui suit:

La façon dont vous avez votre code en ce moment, vous dites au programme de faire des mathématiques sur une chaîne. C'est pourquoi vous obtenez cette erreur.


0 commentaires

0
votes
y1 = int(input("What is the y coordinate of the first circle : "))
r1 = int(input("What is the radius of the first circle       : "))
x2 = int(input("What is the x coordinate of the second circle: "))
y2 = int(input("What is the y coordinate of the second circle: "))
r2 = int(input("What is the radius of the second circle      : "))
x=y1*r1*x2*y2*r2
print(x)

1 commentaires

gâcher avec ça