我正在练习初级编程,我想了一个问题,“房子的价格是100万,如果买家信用好,他们需要支付10%的首付,否则他们需要支付20%的首付。”现在,主要的问题是“打印出声明”。因此,我从一个相当复杂的代码开始(我知道有更好和更简单的方法来解决这个问题,但如果有人能用相应的程序来帮助我解决这个问题,我会非常感激)。我各自的代码:
price = '$1000000'
good_credit = (10/100*float(price))
bad_credit = (20/100*float(price))
lit_credit = print(round(good_credit))
unsatisfactory_credit = print(round(bad_credit))
awesome_credit = price - lit_credit
poor_credit = price - unsatisfactory_credit
awesome_credit = True
poor_credit = False
if awesome_credit:
print(price - good_credit)
elif poor_credit:
print(price - bad_credit)当我运行这个程序时,错误状态不能将字符串转换为浮点型。无论如何,为了我的好奇心,能不能请谁来帮我找出我的错误所在(如果你发送的更新程序是有效的,并且它满足了问题的所有要求,我将不胜感激)。(如果你发送的更新程序是有效的,并且它满足了问题的所有要求,我将不胜感激)。如果有人能帮上忙,我将不胜感激。我试图通过只包含good_credit和bad_credit变量来使其更简单地运行代码,但它似乎并不能如此简单地工作。然而,我现在想学习如何使用我正在使用的变量运行代码,如果有人能回答为什么我的代码不能将字符串转换为浮点型,或者这是不可能的,我将不胜感激。
非常感谢!
发布于 2020-11-23 11:39:45
您可以将字符串转换为浮点型,但您有$符号,因此需要将其删除。
good_credit = (10/100*float(price))
bad_credit = (20/100*float(price))下一步,你会得到一个错误,说这个ValueError: invalid literal for int() with base 10: '$1000000',这基本上意味着它不能转换字符串开头的$符号。一个简单的解决方法是简单地删除$符号。你将得到的下一个错误是TypeError: unsupported operand type(s) for -: 'str' and 'NoneType',这是因为你试图从字符串中减去None,lit_credit和unsatisfactory_credit被赋值为None,因为你将返回值print()赋给了它们。解决这个问题的一个简单方法是删除print(),并在为变量赋值之后将其添加到其中。
lit_credit = round(good_credit)
unsatisfactory_credit = round(bad_credit)
print(lit_credit, unsatisfactory_credit)您将遇到的下一个错误是此TypeError: unsupported operand type(s) for -: 'str' and 'int'。这基本上意味着你不能从一个整数(lit_credit和unsatisfactory_credit)中减去一个字符串(price)。解决这个问题的方法是将price转换为一个整数,如下所示。我也不知道这段代码的重点是什么,也不知道它与你的问题有什么关系,但这就是它应该是什么样子的,不管你把它放在这里的原因是什么。
awesome_credit = int(price) - lit_credit
poor_credit = int(price) - unsatisfactory_credit现在,下一段代码没有任何意义
awesome_credit = True
poor_credit = False
if awesome_credit:
print(int(price) - good_credit)
elif poor_credit:
print(int(price) - bad_credit)如果您想要做的是询问用户他们的信用是好是坏,然后计算出他们需要支付的首付,那么您需要使用input()函数要求输入。
发布于 2020-11-23 11:20:06
首先,你不能将$1000000转换成浮点型,因为在转换的时候,你的机器不会理解$是什么,所以它会给出一个错误,如果你只给了1000000而没有符号,那么它就可以转换成float.But。
接下来,您的代码将显示一个错误,因为在以下几行中:
价格= awesome_credit - lit_credit
价格= poor_credit - unsatisfactory_credit
您没有将lit_credit或unsatisfactory_credit定义为整数,而是将它们打印出来,因此在您的代码中,请在为这些变量赋值时删除print语句。
最后,如果awesome_credit总是为True,那么您的代码是正确的,但是如果您想实际检查awesome_credit是否为True,则必须请求输入,然后使用if..else块。(这只是一个建议)
发布于 2020-11-23 11:38:27
price = 1000000
scores = {"good_credit":(10/100* price),"bad_credit":(10/100* price )}
awesome_credit = price - scores["good_credit"]
poor_credit = price - scores["bad_credit"]
if awesome_credit:
print(f'Good Credit Final Price: ${price - scores["good_credit"]}')
elif poor_credit:
print(f'Poor Credit Final Price: ${price - scores["bad_credit"]}') 我个人就是这么做的,你不能把一个字符串转换成一个浮点数,在你的第一个变量声明中,你有price = "1000000“,任何双引号或单引号之间的值都是一个字符串,你实际上不需要强制它成为一个浮点数,在数字上执行数学运算是允许的。你也不需要舍入信用值,除非你想这样做。
您的代码中有一个主要缺陷,即使在我发送的代码中,也没有理由将awesome_credit和poor_credit定义为true或false,实际上您覆盖了该值。问题还在于,因为它们都有价值观,所以它们都是真的。这将永远是良好的信用。现在要解决这个问题,你需要确定什么定义好的信用或坏的信用。在现实世界中,你将处理两种情况,1)你正在使用django之类的东西,信用评分将从模型中获取,或者2)你正在计算好的或坏的信用的值,并且你有一个基线,上面是好的,下面是坏的。
希望这有助于干杯!
https://stackoverflow.com/questions/64962006
复制相似问题