【发布时间】:2020-12-11 13:22:24
【问题描述】:
当我想将计算 string 转换为 float 时,我不明白为什么会得到 ValueError .我想要一个问题,因为我被困住了。
(我的代码的目的是根据问题编号创建随机方程,其级别会增加。)(我仍然是初学者,如果我的代码不规范(法语也是如此),请见谅。)
:)
这是我的代码:
(输入)
from random import *
def Numéro_Question():
global NuméroQuestion
NuméroQuestion+=1
print("\t~ Question {} ~\t\n".format(NuméroQuestion))
def Calcul2():
PremierChiffre=randint(0, NuméroQuestion*5+5)
Question=str(PremierChiffre)
for i in range(1,NuméroQuestion+1):
SigneDeCalcul=["+","*","-"]
SigneChoisi=str(choice(SigneDeCalcul))
x=str(randint(0, NuméroQuestion*5+5))
Question=Question+SigneChoisi+x
print(type(Question))
QuestionNumérique=float(QuestionNumérique)
QuestionEcrite=Question+" = "
Question=float
Réponse=input(QuestionEcrite)
NuméroQuestion=0
Raté=0
while Raté<3:
Numéro_Question()
Calcul2()
print("\n\n")
(输出)
(每次执行程序时输出都会发生变化,因为它给出了随机数)
~ Question 1 ~
<class 'str'>
回溯(最近一次通话最后一次):
文件“main.py”,第 26 行,位于
Calcul2()
Calcul2 中的文件“mai,.py”,第 17 行
QuestionNumérique=float(QuestionNumérique)
ValueError: 无法将字符串转换为浮点数:'3*6'
【问题讨论】:
-
您的字符串不包含浮点数的表示。你是说 str('3.6') 吗?
-
3*6不是浮点数。它可以被解释为一个表达式,但float()只接受浮点文字字符串。根据您的需要,使用3.6或18之类的内容。 -
您想将表达式字符串
3*6转换为浮点数。*不是有效的浮点字符。使用危险的eval方法 -
问题中的代码不会产生该错误。它实际上引发了
UnboundLocalError,因为QuestionNumérique没有在任何地方定义。 -
@tom-karzes 请阅读文档docs.python.org/3/library/ast.html#ast.literal_eval
ast.literal_eval无法评估简单的运算符。
标签: python string floating-point equation valueerror