对“ for”为什么不起作用的疑问(Python)

时间:2018-10-19 13:26:37

标签: python-3.x for-loop

我从一开始就学习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的错误

我在做什么错了?

1 个答案:

答案 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(",",".")不是有效的浮点数)