此例外:
ValueError:以10为底的int()无效文字:“ 17.1”
提示音弹出,但我不知道如何解决。
我必须不仅可以在整数中使用小数,而且如果没有int(n1)
和int(n2)
也将不能使用小数。
n1 = input("Enter the first number: ")
n2 = input("Enter the second number: ")
n1 = int(n1)
n2 = int(n2)
if n1 and n2 > 10:
print("Both are above 10.")
elif n1 and n2 <= 10:
print("Both are below 10.")
avg = (n1 + n2) / 2
print("Average is {:.2f}".format(avg))
答案 0 :(得分:0)
如果在字符串上使用int
,则字符串必须是整数(而不是十进制)。但是您可以简单地将其转换为float
,然后它还转换表示十进制数字和以及整数的字符串:
n1 = float(input("Enter the first number: "))
n2 = float(input("Enter the second number: "))
# Rest of your program
如果您希望将其作为整数(如果是整数),并且仅将其作为浮点数(如果您不是整数),则可以同时尝试以下两种方法:
n1 = input("Enter the first number: ")
try:
n1 = int(n1)
except ValueError:
n1 = float(n1)
第二次输入同样如此。
如果您想要精确的小数点和运算,则可以使用decimals.Decimal
或fractions.Fraction
而不是float
(浮点数比其他两个浮点数更快但精度有限):>
from fractions import Fraction
n1 = input("Enter the first number: ")
try:
n1 = int(n1)
except ValueError:
n1 = Fraction(n1)
其他评论:
您可能应该使用if n1 > 10 and n2 > 10:
和elif n1 <= 10 and n2 <= 10
。否则结果将不是您期望的。因为if n1 and n2 > 10
将被解释为就像您写了if n1 and (n2 > 10)
一样(如果n1
是一个数字,而数字只有False
则为if (n1 != 0) and (n2 > 10)
)到{ {1}}。
答案 1 :(得分:0)
首先,如果您使用的是int()
,则要将变量转换为integer
,则应将其输出为int
,而不是float
。
第二步,您无需重新分配n1
和n2
,则可以在调用函数时转换从函数返回的值:
n1 = float(input("Enter the first number: "))
n2 = float(input("Enter the second number: "))
如果要确保程序的输入仅是数字,则在输入字母的情况下可以使用try
和except
:
try:
n1 = float(input("Enter the first number: "))
n2 = float(input("Enter the second number: "))
except ValueError as e:
print("The values might only be numbers.")
# print("Exception:\n{}".format(e)) #if you want to see the traceback