从你代码和截图看,计算并没有问题,第二个方法只能计算英文的标点符号,你字符串的是中文符号,所以标点是0个,改成英文符号就可以计算出来了。
```python
from string import punctuation
def is_Chinese(uchar):
if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
return True
else:
return False
def is_zh_punctuation(w):
punctuation_str = punctuation
if w in punctuation_str:
return True
else:
return False
s = "学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?"
m=0
n=0
for a in s:
if is_Chinese(a):
m += 1
else:
if is_zh_punctuation(a):
n +=1
print(f"在s中有{m}个中文字符和{n}个标点符号。")
C:\Users\Lenovo\AppData\Local\Programs\Python\Python38\python.exe E:/testTools/software_test/test.py
在s中有30个中文字符和6个标点符号。
Process finished with exit code 0
if is_chinese(a):
m+=1
else if ....