Python 3.3字符串错误

时间:2013-11-24 20:07:18

标签: python python-3.x

我正在尝试制作一个非常基本的计算器来熟悉python的基础知识。部分代码涉及询问输入并将其设置为不同的变量,但作为输入输入的变量存储为字符串,即使它们作为数字输入:

def change_x_a():
    velocity_i = input("Initial Velocity?")
    velocity_f = input("Final Velocity?")
    time = input("Time?")
    float(velocity_i)
    float(velocity_f)
    float(time)
    answer = (0.5*(velocity_i+velocity_f)*time)
    print(answer)

有解决方法吗?

3 个答案:

答案 0 :(得分:6)

float()不会修改您传递的变量。相反,它会转换您为其提供的值,并且返回一个float

所以

float(velocity_i)

本身什么都不做,

velocity_i = float(velocity_i)

会给出您正在寻找的行为。


请记住float()(以及其他类型转换函数)如果你传递了一些他们不期望的东西,就会抛出异常。为了获得更好的用户体验,您应该handle these exceptions 1 。通常,人们会在循环中执行此操作:

while True:
    try:
        velocity_i = float(input("Initial Velocity?"))
        break               # Valid input - stop asking
    except ValueError:
        pass                # Ignore the exception, and ask again

我们可以将这种行为包装成一个很好的小函数,使其更易于重复使用:

def get_input(prompt, exptype):
    while True:
        try:
            return exptype( input(prompt) )
        except ValueError:
            pass                # Ignore the exception, and ask again

并将其称为:

val_f = get_input('Give me a floating-point value:', float)
val_i = get_input('Give me an integer value:', int)

1 - 哇,我刚才意识到,我事后已独立编写了与Python教程完全相同的代码。

答案 1 :(得分:1)

当您从用户那里获取输入时,您可以将输入转换为浮动。

尝试

velocity_i = float(input("Initial Velocity?")

等等。

答案 2 :(得分:1)

是。只需将其转换为浮点数:

velocity_i = float(input("Initial Velocity?"))

或整数:

velocity_f = int(input("Final velocity?"))