我从一开始就学习Python,而我试图做一个计算器只是为了学习基础知识。
print("Entre com os 2 valores: ")
y = input()
z = input()
for a in y:
if a == '.' or a == ',':
num1 = float(y)
else:
num1 = int(y)
for a in z:
if a == '.' or a == ',':
num2 = float(z)
else:
num2 = int(z)
soma = num1 + num2
print(soma)
我想做的是,使用for检查输入值的字符串中的每个字符,如果其中一个值的输入中有一个点,则应将其转换为float不,要整数
但是,即使我输入了浮点型数字,似乎for条件也从未满足,因为它似乎是试图转换为int的错误
我在做什么错了?
答案 0 :(得分:1)
for a in y:
if a == '.' or a == ',':
num1 = float(y)
else:
num1 = int(y)
测试字符串的 all 个字符,如果找到点或逗号,则转换为float,否则转换为整数。
这意味着它将多次(错误地)转换为整数或浮点数。
请不要这样做。使用try and catch方法从最受约束的类型int
开始,因为float
也将接受整数:
try:
num1 = int(y)
except ValueError:
try:
num1 = float(y)
except ValueError:
print("{} isn't an int or float".format(num1)
raise
让python为您执行解析(这可能很复杂,特别是在具有指数,符号的浮点数的情况下……)
(请注意,除非您执行1,45
,否则num1 = num1.replace(",",".")
不是有效的浮点数)