我用Python编写了这段代码
def receipt(array):
sum = 0.0
for i in range(len(array)):
sum = sum + array[i]
return sum
array = []
while True:
print("Calculating Price")
n = input("Enter a price: ")
if n == "":
print("Goodbye")
break
array.append(n)
totalCost = receipt(n)
print("The total cost is " + str(totalCost))
我想知道为什么这个代码不起作用。第四行似乎有点错误
^{pr2}$但我不知道哪一部分是错的。我相信我正确地使用了数组[I]组件。也许这是一个字符串的问题?在
Question:
一般来说,我对计算机科学比较陌生。谢谢你的帮助。什么都值得感激!在
我运行了你的代码,得到了这个错误:
这意味着在}的类型匹配,这是一个浮点,因为您将它初始化为
^{pr2}$sum = sum + array[i]
行中,类型不匹配。您需要将array[i]
包装在float()
函数中,以便将array[i]
与{0.0
。文档说input()
函数返回一个字符串,由于您要将n
附加到array
,所以您正试图用一个浮点对字符串求和。线条应该是这样的:再次尝试运行它,代码就可以工作了。Here是{}的文档
编辑:现在要解决的问题是与总和。在
这是你的代码的一个版本,我已经修正了,以你想要的方式进行添加。在
正如其他人提到的,}。我怀疑这是你想要的。相反,您希望保持项目计数的运行总数,这需要传递到函数中。我还消除了你函数中的循环。这个循环实际上是迭代
sum
不是一个好的变量名,所以我将它重命名为sumvar
。请注意函数外部的sumvar
声明。当您像您一样初始化sumvar
内部的receipt()
时,您将始终向n
添加{array
中的字符,而不是您期望的元素。在你有什么问题,我会一一点评:
首先,你有一些压痕问题,小心点。 其余的是代码中的注释
首先有几件事不对。我会解释每件事。 以下是您的完整工作代码:
你的错误:
1)
array.append(n)
-第一个。对于初学者来说很常见。在python中的
input()
以字符串形式获取用户输入。所以你的n
是一个字符串。在请看所有语言中都有data types。Python是一种强类型语言,而perl不是强类型语言。如何判断语言是强类型还是弱类型?简单。在你的翻译里试试这个。在
^{pr2}$看到错误了现在试试这个
工作得很好。Python不允许只使用
a+b
,而有些语言则支持exampleperl。多读一读。所以你不能添加它们你必须类型转换。所以把它换成或者
如果要使用浮点值。在
2)
totalCost = receipt(n)
请看您正在将n
传递给函数。但是你的函数定义有def receipt(array):
。这里实际发生的是其中
n ------> array
所以你的array
就是n
。你应该做的是3)
sum = 0.0
NEVER我说过不要使用内置或关键字名称(例如:sum、min、max、int、str等)作为变量名。阅读有关在PEP 8中命名的详细信息所以也许可以将
sum
重命名为sum_
(这是要遵循的惯例),但是为什么不能将sum
重命名为total
简单得多?在4)和最后
为什么
range(len(array))
当你可以简单地做for i in array:
无法理解请看这个例子:
See
for item in something
只需要从一组东西(iterable(list、tuple、set等)中获取每个条目把这些线改成
你得到了你想要的
输出:
更新:
正如评论中提到的,你需要了解更多关于缩进的信息。查看评论中的链接。在
相关问题 更多 >
编程相关推荐