如何接受像';2.0';作为一个整数,但如';2.1';作为浮动?python

如何接受像';2.0';作为一个整数,但如';2.1';作为浮动?python,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我试图让用户在输入字母或非整数时返回错误消息,当输入整数时,程序将继续显示该整数的平方和立方。我的老师不希望代码中出现任何“中断”或任何错误 print("Squaring and cubing integer program has started") #Introduction of program for user UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ") #Asks user t

我试图让用户在输入字母或非整数时返回错误消息,当输入整数时,程序将继续显示该整数的平方和立方。我的老师不希望代码中出现任何“中断”或任何错误

print("Squaring and cubing integer program has started") #Introduction of program for user
UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ") #Asks user to input an integer, that will then be raised to the power of 2 and 3
while '.' in UserNumber or UserNumber.isalpha(): #Error-trap to test if input contained letters of the alphabet or contains decimal point
  print("You have not entered an integer. Try again and enter an integer!") #Alert for user to inform that their entry was invalid (not an integer)
  UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ")  #Asks user again to enter an integer, if they did not previously.
print(int(UserNumber), " is the integer you entered.") #Displays to user their inital integer
print(int(UserNumber), " squared is ", int(UserNumber)**2) #Displays to user their input integer squared
print(int(UserNumber), " cubed is ", int(UserNumber) **3 ) #Displays to user their input integer cubed
print("Calculations are now finished.") #Output to show program has ended
OP的问题基于课堂作业。这个答案假设解决方案必须符合老师决定的规则

只需去掉尾随的零,然后去掉最后的小数点:

UserNumber = UserNumber.rstrip('0').rstrip('.')
在执行测试之前,将此行放在
input
语句之后:

print("Squaring and cubing integer program has started") #Introduction of program for user
UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ") #Asks user to input an integer, that will then be raised to the power of 2 and 3
UserNumber = UserNumber.rstrip('0').rstrip('.')
while '.' in UserNumber or UserNumber.isalpha(): #Error-trap to test if input contained letters of the alphabet or contains decimal point
    print("You have not entered an integer. Try again and enter an integer!") #Alert for user to inform that their entry was invalid (not an integer)
    UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ")  #Asks user again to enter an integer, if they did not previously.
    UserNumber = UserNumber.rstrip('0').rstrip('.')
print(int(UserNumber), " is the integer you entered.") #Displays to user their inital integer
print(int(UserNumber), " squared is ", int(UserNumber)**2) #Displays to user their input integer squared
print(int(UserNumber), " cubed is ", int(UserNumber) **3 ) #Displays to user their input integer cubed
print("Calculations are now finished.") #Output to show program has ended
OP的问题基于课堂作业。这个答案假设解决方案必须符合老师决定的规则

只需去掉尾随的零,然后去掉最后的小数点:

UserNumber = UserNumber.rstrip('0').rstrip('.')
在执行测试之前,将此行放在
input
语句之后:

print("Squaring and cubing integer program has started") #Introduction of program for user
UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ") #Asks user to input an integer, that will then be raised to the power of 2 and 3
UserNumber = UserNumber.rstrip('0').rstrip('.')
while '.' in UserNumber or UserNumber.isalpha(): #Error-trap to test if input contained letters of the alphabet or contains decimal point
    print("You have not entered an integer. Try again and enter an integer!") #Alert for user to inform that their entry was invalid (not an integer)
    UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ")  #Asks user again to enter an integer, if they did not previously.
    UserNumber = UserNumber.rstrip('0').rstrip('.')
print(int(UserNumber), " is the integer you entered.") #Displays to user their inital integer
print(int(UserNumber), " squared is ", int(UserNumber)**2) #Displays to user their input integer squared
print(int(UserNumber), " cubed is ", int(UserNumber) **3 ) #Displays to user their input integer cubed
print("Calculations are now finished.") #Output to show program has ended
OP的问题基于课堂作业。这个答案假设解决方案必须符合老师决定的规则

只需去掉尾随的零,然后去掉最后的小数点:

UserNumber = UserNumber.rstrip('0').rstrip('.')
在执行测试之前,将此行放在
input
语句之后:

print("Squaring and cubing integer program has started") #Introduction of program for user
UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ") #Asks user to input an integer, that will then be raised to the power of 2 and 3
UserNumber = UserNumber.rstrip('0').rstrip('.')
while '.' in UserNumber or UserNumber.isalpha(): #Error-trap to test if input contained letters of the alphabet or contains decimal point
    print("You have not entered an integer. Try again and enter an integer!") #Alert for user to inform that their entry was invalid (not an integer)
    UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ")  #Asks user again to enter an integer, if they did not previously.
    UserNumber = UserNumber.rstrip('0').rstrip('.')
print(int(UserNumber), " is the integer you entered.") #Displays to user their inital integer
print(int(UserNumber), " squared is ", int(UserNumber)**2) #Displays to user their input integer squared
print(int(UserNumber), " cubed is ", int(UserNumber) **3 ) #Displays to user their input integer cubed
print("Calculations are now finished.") #Output to show program has ended
OP的问题基于课堂作业。这个答案假设解决方案必须符合老师决定的规则

只需去掉尾随的零,然后去掉最后的小数点:

UserNumber = UserNumber.rstrip('0').rstrip('.')
在执行测试之前,将此行放在
input
语句之后:

print("Squaring and cubing integer program has started") #Introduction of program for user
UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ") #Asks user to input an integer, that will then be raised to the power of 2 and 3
UserNumber = UserNumber.rstrip('0').rstrip('.')
while '.' in UserNumber or UserNumber.isalpha(): #Error-trap to test if input contained letters of the alphabet or contains decimal point
    print("You have not entered an integer. Try again and enter an integer!") #Alert for user to inform that their entry was invalid (not an integer)
    UserNumber=input("Enter an integer to be raised to the power of 2 and 3: ")  #Asks user again to enter an integer, if they did not previously.
    UserNumber = UserNumber.rstrip('0').rstrip('.')
print(int(UserNumber), " is the integer you entered.") #Displays to user their inital integer
print(int(UserNumber), " squared is ", int(UserNumber)**2) #Displays to user their input integer squared
print(int(UserNumber), " cubed is ", int(UserNumber) **3 ) #Displays to user their input integer cubed
print("Calculations are now finished.") #Output to show program has ended
A) 我不想删除任何数字B)我想检查用户输入的不是整数,而是字母和小数(不是像2.0、1.0这样的小数,因为它们分别等于2,1)

根据您的描述,您可以使用
re
模块来实现您的工作:

import re


def is_integer(num):
    s = str(num)
    return re.match('^(-?\d+)(\.[0]*)?$', s) is not None


print is_integer(1123123)  # True
print is_integer(1123123.)  # True
print is_integer(1123123.00000)  # True
print is_integer(1123123.00100)  # False
A) 我不想删除任何数字B)我想检查用户输入的不是整数,而是字母和小数(不是像2.0、1.0这样的小数,因为它们分别等于2,1)

根据您的描述,您可以使用
re
模块来实现您的工作:

import re


def is_integer(num):
    s = str(num)
    return re.match('^(-?\d+)(\.[0]*)?$', s) is not None


print is_integer(1123123)  # True
print is_integer(1123123.)  # True
print is_integer(1123123.00000)  # True
print is_integer(1123123.00100)  # False
A) 我不想删除任何数字B)我想检查用户输入的不是整数,而是字母和小数(不是像2.0、1.0这样的小数,因为它们分别等于2,1)

根据您的描述,您可以使用
re
模块来实现您的工作:

import re


def is_integer(num):
    s = str(num)
    return re.match('^(-?\d+)(\.[0]*)?$', s) is not None


print is_integer(1123123)  # True
print is_integer(1123123.)  # True
print is_integer(1123123.00000)  # True
print is_integer(1123123.00100)  # False
A) 我不想删除任何数字B)我想检查用户输入的不是整数,而是字母和小数(不是像2.0、1.0这样的小数,因为它们分别等于2,1)

根据您的描述,您可以使用
re
模块来实现您的工作:

import re


def is_integer(num):
    s = str(num)
    return re.match('^(-?\d+)(\.[0]*)?$', s) is not None


print is_integer(1123123)  # True
print is_integer(1123123.)  # True
print is_integer(1123123.00000)  # True
print is_integer(1123123.00100)  # False
这是Python中唯一可以接受的方法,如果你的老师不理解异常,他不应该用Python教编程(老实说,他根本不应该教编程)

这是Python中唯一可以接受的方法,如果你的老师不理解异常,他不应该用Python教编程(老实说,他根本不应该教编程)

这是Python中唯一可以接受的方法,如果你的老师不理解异常,他不应该用Python教编程(老实说,他根本不应该教编程)


这是Python中唯一可以接受的方法,如果你的老师不理解异常,他不应该教Python编程(老实说,他根本不应该教编程)

2.0
不是整数;这是一个浮子float类似于精度有限的标准IEEE 754浮点(如果平台支持IEEE 754浮点,则Python可能使用它)。Python中的整数具有无限精度(直到内存耗尽):

切勿混合使用float和int,除非您知道在您的情况下它不会改变结果,例如,
2==2.0
,但如示例所示,对于较大的数字,它可能为false

您的老师可能希望您找到
.is\u integer()
方法:

>>> 2.0 .is_integer()
True
>>> 2.1 .is_integer()
False
另见

要将
'2.0'
转换为浮点,可以调用
float()
函数:

#!/usr/bin/env python3
while True:
    try:
         f = float(input('Enter a number: '))
    except ValueError:
         print('Try again')
    else:
         break # got a number
在Python中,这是从stdin获取数字的正确方法。如果您的老师禁止使用
ValueError
break
,那么您可以使用正则表达式:
如果重新匹配(“^[+-]?*(\d+(\.\d*)?\.\d+)([eE][+-]?\d+)?$”,则输入字符串):
接受
20e-1==2.0==2
。看


要测试输入是否不为空且仅包含十进制数字,即要检查它是否为非负整数,如果调用
int(input\u string)
并且禁止捕捉
ValueError
,则可以使用
input\u string.isdecimal()
方法。请参阅。

2.0
不是整数;这是一个浮子float类似于精度有限的标准IEEE 754浮点(如果平台支持IEEE 754浮点,则Python可能使用它)。Python中的整数具有无限精度(直到内存耗尽):

切勿混合使用float和int,除非您知道在您的情况下它不会改变结果,例如,
2==2.0
,但如示例所示,对于较大的数字,它可能为false

您的老师可能希望您找到
.is\u integer()
方法:

>>> 2.0 .is_integer()
True
>>> 2.1 .is_integer()
False
另见

要将
'2.0'
转换为浮点,可以调用
float()
函数:

#!/usr/bin/env python3
while True:
    try:
         f = float(input('Enter a number: '))
    except ValueError:
         print('Try again')
    else:
         break # got a number
在Python中,这是从stdin获取数字的正确方法。如果您的老师禁止使用
ValueError
break
,那么您可以使用正则表达式:
如果重新匹配(“^[+-]?*(\d+(\.\d*)?\.\d+)([eE][+-]?\d+)?$”,则输入字符串):
接受
20e-1==2.0==2
。看

测试输入是否不是emp