我对编程相当陌生,一直在编写一个程序来计算从0到9的每个值在一个数字串中出现的次数(这个程序必须使用一个函数和调用它的main函数)。如果用户输入数字123512378,我希望它告诉我1发生2次2次发生2次。。。8发生1次等等。现在我试图将一个字符串传递给一个函数,然后按顺序返回一个包含出现次数的列表。但是我的只是返回我在开始时生成的空列表。这是我的代码:
def countdigits(aString,Result):
countValue=0
while countValue>=9:
Result[countValue]=(aString.count(str(countValue)))
countValue=countValue+1
return Result
def main():
emptyList = 10 * [0]
numbers=str(input("Pleas enter a string of numbers: "))
print(countdigits(numbers,emptyList))
main()
而不是你可以用
或者干脆
^{pr2}$但这看起来是一种非常有效的方法(请参阅下面的编辑),您将循环10次(收敛计数将不得不搜索整个字符串),但你可以通过循环一次,然后边走边数来计数
输出:
如果你想的话,它可以很容易地转换成类似
Result
的数组,但我看不出这有什么好处编辑: 看起来第二个版本应该很快,因为它循环一次,但不是,
list.count
是用C语言编写的,速度非常快,可以进行快速搜索,但是python中的循环太慢了,所以timeit会显示谁才是真正的赢家输出:
第二个版本慢了9倍多。在
使用
while countValue<=9:
。您使用了>=
。在相关问题 更多 >
编程相关推荐