我正在尝试制作一个非常基本的计算器来熟悉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)
有解决方法吗?
答案 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?"))