前言
有同学有道题不会,便来问我。我以为会很难,就写了个开头。结果写完发现,不过如此,哎。不过开头写都写了,干脆氵完好了。
题目
题目描述
输入若干个字符,按回车键结束输入,请你采用Python语言编程完成下面需求:
- 统计出其中大写英文字母
A~Z
的个数为a
- 统计出其中小写英文字母
a~z
的个数为b
- 统计出其中数字字符
0~9
个数为c
若以a、b、c的值作为任意的直角边和斜边方式有一种可以组成直角三角形(勾股定理),输出YES和abc的值,中间用一个空格隔开; 不能组成直角三角形,直接输出NO
题目要求
输入形式 输入一行宇符串,按回车键结束
输出形式 输出
YES abc
或NO
样例输入1
NBA Kobe Hu 824
样例输出1
YES 5 43
样例输入2
NBA Kobe Brvant 824
样例输出2
NO
{% note info:: 注意YES的情况还要求按大写字母个数、小写字母个数及数字字符个数顺序输出三边长,中间用一个空格隔开 %}
题解
思路
很简单的计数,for循环即可轻松解决。三角形的判定if应该就可以了。
代码
S = input()
Count_Up = Count_low = Count_dg = null = 0
for c in S:
if c.isupper():
Count_Up += 1
elif c.islower():
Count_low += 1
elif c.isdigit():
Count_dg += 1
else:
null += 0
if Count_Up ** 2 + Count_low ** 2 == Count_dg ** 2 or Count_low ** 2 + Count_dg ** 2 == Count_Up ** 2 or Count_dg ** 2 + Count_Up ** 2 == Count_low ** 2:
print('YES', Count_Up, Count_low, Count_dg)
else:
print('NO')
应该是没有大问题的,至少样例是能过的。