我为Python中的信息学练习创建了以下python代码。代码将运行,但不会将大于1的用户的输入识别为数字。任何帮助将不胜感激。
def isfloat(string):
try:
float(string)
if float(string) == True:
return True
except ValueError:
return False
user_input = input('Please enter a real number. Type \"done\" to exit and tally your entries \n> ')
data = 0
count = 0
while isfloat(user_input) == True:
data = data + float(user_input)
count = count + 1
user_input = input("Please enter another value \n> ")
isfloat(user_input)
else:
if (isfloat(user_input) == False) and (user_input == "done"):
print("The sum of your entries is: " + str(data))
print("The number of entries was: " + str(count))
exit()
else:
print("The entry was not a numeric value \n")
print("The sum of your valid entries is: " + str(data))
print("The number of valid entries was: " + str(count))
exit()
答案 0 :(得分:1)
这太荒谬了:
self
检查if float(string) == True:
转换后的值是否等于float
(数字为1)。
只需检查异常并转到:
True
答案 1 :(得分:0)
问题在于float(string)
永远不会返回True
;它将始终返回多个类型float
或,如果输入无法转换为浮点数,它将引发ValueError
。
要解决此问题,您需要删除if
语句,并在True
功能中调用float(string)
后返回isfloat
。如果float(string)
提出ValueError
,则isfloat
会像您预期的那样返回False
;否则,它将继续并返回True
。
def isfloat(string):
try:
float(string)
return True
except ValueError:
return False
答案 2 :(得分:0)
问题在于您的isfloat
。您不应该将float
的结果与True
进行比较。而是做类似的事情:
def isfloat(string):
try:
float(string)
return True
except ValueError:
return False
您不需要实际执行任何返回值为float
的内容。如果该调用没有触发错误 - 你有一个浮点数,所以只需返回True
。
使用行
可能很诱人if float(string): return True
这将几乎工作,但会错误分类"0"