проверка десятичных точек с использованием цикла while - PullRequest
0 голосов
/ 03 декабря 2018

Я написал некоторый код, чтобы проверить, содержат ли две входные переменные десятичные точки следующим образом:

while "." in n:
    print()
    print("Please enter only integer numbers")
    n = input("Please enter the numerator:")
    d = input("Please enter the denominator:")

while "." in d:
    print()
    print("Please enter only integer numbers")
    n = input("Please enter the numerator:")
    d = input("Please enter the denominator:")

однако мне нужен способ, чтобы эти циклы игнорировались, если после десятичной дроби следует 0, например4,0 или 8,0.

Есть ли способ сделать это, или есть лучший способ проверить, является ли введенное число десятичным?Я не хочу делать ввод с плавающей точкой с самого начала, так как он также должен работать, если пользователь вводит целое число.

Используемая версия python - 3.5.4.

Ответы [ 4 ]

0 голосов
/ 03 декабря 2018

Рассмотрим сравнение их как фактических типов значений:

while int(float(d)) != float(d) or int(float(n)) != float(n):

0 голосов
/ 03 декабря 2018

это решение, которое вы ищете

while int(float(d)) != float(d) or int(float(n)) != float(n):

другие ответы не будут работать для чисел типа 8.05

0 голосов
/ 03 декабря 2018

Чтобы отменить ответ @public static void main, вы также можете объединить свой цикл.

while ("." in n and ".0" not in n) or ("." in d and ".0" not in d):
    n = input("Enter the numerator: ")
    d = input("Enter the denominator: ")
0 голосов
/ 03 декабря 2018

Замените это:

while "." in n:

на это:

while "." in n and ".0" not in n:

Это заставляет код в цикле выполняться, когда "."находится в n, но ".0" это , а не в n.

...