0
votes

Réduire la boucle d'équation

J'essaie de créer une boucle où si la valeur de "x" est un nombre entier qu'il la divise par 2 et c'est la nouvelle valeur. Ensuite, si la nouvelle valeur est un nombre entier, il se divise par 2 ou s'il a une décimale, il la soustrait de 0,5 et qui devient la nouvelle valeur. Je veux qu'il boucle de "x" à> = 1,5

J'ai essayé un moment / si / elif et je me rapproche, mais quand je change ma valeur "x" de 217 à 218, la sortie n'est pas correcte. P>

def func():
    val = 218
    while val >= 1.5:
        val = val/2
        print(val)
        if val is float:
            val = val-.5
            print(val)
        elif val is int:
            val = val/2
            print(val)
        else:
            val = val//2
            print(val)
func()


0 commentaires

3 Réponses :


0
votes

Le principal problème est que les conditions "Val sont flottants" et "Val est INT 'sont toujours fausses, vous avez besoin d'une autre façon de vérifier si la partie décimale de Val est 0 ou non.

Une manière difficile à faire Il (mais il y a mieux, sans aucun doute) est le suivant: xxx

d'ailleurs, selon l'algorithme que vous décrivez au début, la finale d'autre ne devrait pas exister. En outre, au début de la boucle, vous avez oublié de diviser la valeur de 2 seulement si elle est ronde.

Vous faites deux opérations différentes dans chaque boucle, c'est pourquoi le résultat final peut avoir une longueur d'avance sur Ce que vous attendez, vous voudrez peut-être changer la boucle pour effectuer une opération à chaque itération ou ajouter une condition à la deuxième opération.


1 commentaires

Merci. Tu m'as aidé à me rapprocher.



0
votes

Le test le plus simple pour savoir si le résultat de la variation de valeur x code> par 2 est un entier est: xxx pré>

ou, en général: p>

218 (/2) 109.0 (/2) 54.5 (-0.5) 54.0 (/2) 27.0 (/2) 13.5 (-0.5) 13.0 (/2) 6.5 (-0.5) 6.0 (/2) 3.0 (/2) 1.5 (>= 1.5)


2 commentaires

C'était exactement ce dont j'avais besoin. Merci!


@Shaunabuddenhagen en tant que débutant, vous devriez lire Que dois-je faire quand quelqu'un répond à ma question? .



0
votes

Quelque chose de lisse: xxx


0 commentaires