2
votes

(Question débutant) Pourquoi ma chaîne formatée ne fonctionnera-t-elle pas correctement?

J'utilise le logiciel Vs Code pour pratiquer mes compétences en programmation. J'essaie de faire sortir les résultats «Oui» si les deux entrées sont supérieures à 100 (revenu) et 70 (pointage de crédit). Il semble ne s'inquiéter que de la fourchette de la cote de crédit et non du revenu. Ainsi, quel que soit le niveau ou le niveau de revenu, il donne des résultats basés uniquement sur le pointage de crédit. Quelqu'un peut-il signaler des erreurs dans mon code? De plus, aucune erreur de syntaxe ne m'avertit de tout problème. Quelqu'un peut-il comprendre cela?

P.s Je comprends que je pourrais écrire le code d'une autre manière, mais j'essaie d'utiliser des chaînes formatées car je pense qu'il sera avantageux de l'utiliser à long terme lorsque je démarre des projets plus complexes. Je suis nouveau dans le codage, donc je ne suis pas sûr si les chaînes formatées sont vraiment nécessaires, mais je les préfère.

customer_income = input("Annual Salary: ")
customer_credit = input("Credit Score?: ")

good_income = customer_income >= "100"
good_credit = customer_credit >= "70"

message = "Yes" if good_income and good_credit else "No"

print(message)

J'essaie de faire sortir les résultats «Oui» si les deux entrées sont supérieures à 100 (revenu) et 70 (cote de crédit). Les résultats ignorent l'entrée de revenu et se concentrent uniquement sur la cote de crédit. Mais retournera également «Non» si la cote de crédit est supérieure à 99.


0 commentaires

3 Réponses :


2
votes

Oh je vois, vous devez le convertir en int si vous utilisez input:

customer_income = input("Annual Salary: ")
customer_credit = input("Credit Score?: ")

good_income = int(customer_income) >= 100
good_credit = int(customer_credit) >= 70

message = "Yes" if good_income and good_credit else "No"

print(message)

La sortie avec 99 et 70 est no , et avec 100 et 70 code > est oui


0 commentaires

0
votes

Vous essayez de comparer des chaînes mais pas des entiers. Il fonctionnera mais la comparaison est basée sur l'ordre ASCII.

while True:
    customer_income = input("Annual Salary: ")
    try:
        good_income = int(customer_income) >= 100
        break
    except ValueError:
        print('Please type a number.')

while True:
    customer_credit = input("Credit Score?: ")
    try:
        good_credit = int(customer_credit) >= 70
        break
    except ValueError:
        print('Please type a number.')

message = "Yes" if good_income and good_credit else "No"

print(message)


1 commentaires

Ahhh ça a du sens merci! Merci également pour les fonctions supplémentaires, je suppose que celles-ci aideront également à gérer les entrées décimales.



0
votes

Vous essayez de comparer des chaînes, alors que ce que vous attendez réellement est de comparer les int s représentés par ces chaînes.

Par conséquent, vous devez analyser ces chaînes à strong> un int avec la fonction int () :

customer_income = input("Annual Salary: ")
customer_credit = input("Credit Score?: ")

good_income = int(customer_income) >= "100"
good_credit = int(customer_credit) >= "70"

message = "Yes" if good_income and good_credit else "No"

print(message)


0 commentaires