Python 3.3字符串错误

2024-04-25 18:10:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个非常基本的计算器来熟悉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)

有解决办法吗?你知道吗


Tags: 字符串代码answerinputtimedef数字float
3条回答

从用户处获取输入时,可以将其转换为浮点值。你知道吗

试试看

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

等等。你知道吗

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

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

或整数:

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

^{}不会修改传递给它的变量。相反,它转换您给它的值,并返回afloat。你知道吗

所以呢

float(velocity_i)

它本身什么也不做,在哪里

velocity_i = float(velocity_i)

会给你想要的行为。你知道吗


请记住,float()(和其他类型转换函数)将抛出一个异常,如果您向它们传递它们不期望的内容。为了获得更好的用户体验,您应该handle these exceptions1。通常,在循环中执行此操作:

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教程几乎完全相同。

相关问题 更多 >