Это печатает:

я создаю программу для отображения систем счисления, однако у меня возникли проблемы при первом препятствии. Программа будет принимать число от пользователя, а затем использовать его во всей программе, чтобы объяснить некоторые концепции информатики.

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

В настоящее время я использую этот код

while CorrectNumber == False:
try:
    Number = float(NumberString) - 0
    print (Number)
except:
    print ("Error! Not a number!")

Это полезно, поскольку показывает, ввел ли пользователь номер или нет. Однако я не уверен, как теперь проверить значение после десятичного знака, чтобы проверить, следует ли мне преобразовать его в целое число или нет. Какие-нибудь советы?

Ответы на вопрос(3)

Решение Вопроса

это должны быть только цифры. Следует отметить, что этот подход, как сказал @cwallenpoole, НЕ работает с отрицательными входными данными из-за символа '-'. Вы могли бы сделать:

if NumberString.isdigit():
    Number = int(NumberString)
else:
    Number = float(NumberString)

Если у вас уже есть номер, подтвержденный как число с плавающей точкой, вы всегда можете использоватьis_integer (работает с негативами):

if Number.is_integer():
    Number = int(Number)
 cwallenpoole09 окт. 2017 г., 15:46
Не относится к отрицательным числам.
 jacg09 окт. 2017 г., 15:54
использованиеint(NumberString) (вtry и обрабатыватьValueError) вместо использования.isdigit, чтобы проверить, может ли строка быть проанализирована какint.

Не уверен, что я следую за вопросом, но вот идея:

test = ['1.1', '2.1', '3.0', '4', '5', '6.12']

for number in test:
    try:
        print(int(number))
    except ValueError:
        print(float(number))

Возвращает:

1.1
2.1
3.0
4
5
6.12
 jacg09 окт. 2017 г., 15:45
Пожалуйста, не поощряйте написаниеexcept: без указания какого-либо типа исключения. Так должно бытьexcept ValueError:
 cwallenpoole10 окт. 2017 г., 14:43
Это лучший, более питонский подход.

содержит ли дробная часть ненулевые цифры.

def is_int(n):
    try:
        float_n = float(n)
        int_n = int(float_n)
    except ValueError:
        return False
    else:
        return float_n == int_n

def is_float(n):
    try:
        float_n = float(n)
    except ValueError:
        return False
    else:
        return True

Тестирование функций:

nums = ['12', '12.3', '12.0', '123.002']

for num in nums:
    if is_int(num):
        print(num, 'can be safely converted to an integer.')
    elif is_float(num):
        print(num, 'is a float with non-zero digit(s) in the fractional-part.')

Это печатает:

12 can be safely converted to an integer.
12.3 is a float with non-zero digit(s) in the fractional-part.
12.0 can be safely converted to an integer.
123.002 is a float with non-zero digit(s) in the fractional-part.

Ваш ответ на вопрос