我是网站和
python的新手,所以我希望我能提供所有必需的信息.我已经搜索过这个问题但是没有一个解决方案似乎适合我.
我正在尝试创建一个函数来读取一些文本并返回它包含的数字量.例如:
“它是2012”,应该返回“Text has 4 digits”
如果没有数字,则应返回不同的消息,例如:
“这是星期一”,应该返回“文字不包含数字”
所以我写了这个:
def CountNumbers(txt):
sum = 0
for n in txt:
if n.isdigit() == False:
print ("Text does not contain digits")
else:
sum += 1
print("Text has", sum, "digit(s)")
txt = str(input("Write some text: "))
(CountNumbers(txt))
功能似乎没问题,但是打印结果不对,例如:
Write some text: 65
Text has 2 digit(s) #this is ok, but...
当我只输入文字时:
Write some text: sd
Text does not contain digits
Text does not contain digits
Text does not contain digits
Text has 0 digit(s)
当我输入文字和数字时(但首先是文字):
Write some text: sd 564
Text does not contain digits
Text does not contain digits
Text does not contain digits
Text has 3 digit(s)
我知道我的错误在于块,(我认为),但我还没有想出办法,因为当我使用return时,它会在它完成之前停止读取文本.我尝试了大约20种不同的东西,请帮助我!
谢谢 !!
附:我需要将它作为.py工作,而不仅仅是在IDLE(Python Shell)窗口中,这就是我写这样的块的原因.
最佳答案 我刚刚解决了你的代码问题:
def CountNumbers(txt):
sum = 0
for n in txt:
if n.isdigit():
sum += 1
if sum:
print("Text has", sum, "digit(s)")
else:
print ("Text does not contain digits")
CountNumbers(input("Write some text: "))