python3tkinter。ValueError:无法将字符串转换为浮点:';w';
作为Python Tkinter的初学者,我试图在Tkinter上创建一个“终极健身计算器”,供用户输入他们的体重、身高、年龄,并找出他们的BMR(基本代谢率)和TDEE(每日总能量消耗)。我已经记下了大部分代码,但我一直在调试算法的某个部分 问题在于如何将字符串转换为浮点python3tkinter。ValueError:无法将字符串转换为浮点:';w';,python,Python,作为Python Tkinter的初学者,我试图在Tkinter上创建一个“终极健身计算器”,供用户输入他们的体重、身高、年龄,并找出他们的BMR(基本代谢率)和TDEE(每日总能量消耗)。我已经记下了大部分代码,但我一直在调试算法的某个部分 问题在于如何将字符串转换为浮点 我很困惑,因为我已经写下了所有必要的全局变量,我认为W,H和A应该是浮点数,因为我是这样编码的。例如,我说H=(float(Height_CM.get())、W=(float(Weight_KG.get())等等。以下是错误
我很困惑,因为我已经写下了所有必要的全局变量,我认为W,H和A应该是浮点数,因为我是这样编码的。例如,我说H=(float(Height_CM.get())、W=(float(Weight_KG.get())等等。以下是错误:
line 53, in Q1d_Gender
BMR = (66 + (13.7*float(W)) + (5*float(H)) - (6.8*float(A)))
ValueError: could not convert string to float: 'w'
此外,我通过简单地将语句打印到控制台来测试上述算法,如下所示:
W = input("enter weight")
H = input("enter height")
A = input("enter age")
BMR = (66 + (13.7*float(W)) + (5*float(H)) - (6.8*float(A)))
print(BMR)
它成功了。我不明白为什么它不能与tkinter GUI一起工作
查看tkinter的完整代码,并将其复制粘贴到Pycharm或任何Python程序中。谢谢你的帮助,是的,我是初学者:(
程序试图将输入字符串强制转换为浮点。有时,这将在ie
2
或3.5
中起作用。但是,用户也可以输入非浮点的内容,如w
。它将尝试强制转换,但失败,如您所见
您必须检查这些非浮点数并对其进行处理。为了确定字符串是否为数字,请检查以下问题:
您需要确保用户输入的每个值都是有效的数字。如果您尝试使用
float()
对于除仅包含整数或浮点的字符串以外的任何对象,这将导致错误。如果是我,我将使用此处的try/except
方法检查每个值,如果其中一个值不是浮点值,请用户重新输入值
这可以通过使用一个函数来完成,该函数在所有答案都给出后进行检查。
我将使用一个列表来存储所有的值,因为它更干净,更容易使用多个变量名
请参阅下面的代码
var_list = []
def get_input(question):
global var_list
var_list = []
print(question)
var_list.append(input("enter weight: "))
var_list.append(input("enter height: "))
var_list.append(input("enter age: "))
for value in var_list:
try:
float(value)
except ValueError:
get_input("Error: One of the values you entered was not a number.\nPlease answer the following questions with a number.")
get_input("Please answer the following questions with a number.")
BMR = (66 + (13.7*float(var_list[0])) + (5*float(var_list[1])) - (6.8*float(var_list[2])))
print(BMR)
请不要链接到另一个站点上的代码。花点时间创建一个。“我以为W、H和a已经是浮点数了。”。但显然至少有一个与此无关。此时,您所想的不再相关。请删除您的
tkinter
标记,因为此问题与tkinter无关,或者更确切地说,您遇到的问题与tkinter无关,而纯粹是python问题。