擅长:python、mysql、java
<p>正如其他人所说,在赋值中重复使用与函数同名的内容时存在一个问题:</p>
<pre><code>def numeral_C(number_par):
while number_par >=100:
#this numeral_C is already a known function name, now youre reusing it as an int
numeral_C = number_par / 100
#you're using print inside a function, not a best practice, but.....
print "C"*numeral_C,
#uncomment the below line to see why the loop is unnecessary
#print '%d = %d - %d' % (number_par - numeral_C*100, number_par, numeral_C*100)
number_par = number_par - numeral_C*100
return ""
#you're printing, rather than returning, making this useless, and you're str()-ing the "" on return
number = 25101;
etruscan_C = str(numeral_C(number))
print
def numeral_c(number_par):
num_c = number_par / 100
return 'C'*num_c
print numeral_c(number)
</code></pre>
<p>正如您在注释中看到的,简单地重命名函数可以解决这个问题,甚至可以重命名变量。但在我认为的“更大”问题上。。。在</p>
<p>我觉得你的原始数学是一个不必要的循环。比较一下你的数字C和我的数字C的行为:两者的结果都是相同的数字C,但其中一个更可重用(通过将'C'作为字符串返回),而且它缺少循环和大量的重新分配。在</p>
<p>实际上,我找不到循环会再次发生的情况,基于您重新分配的number_par减去最近的楼层100倍。换言之,这种逻辑大部分是无用的。您可以通过以下方式合理地完成整个功能:</p>
^{pr2}$