本題要求撰寫程式,輸入10個字符,統計其中英文字母、空格或回車、數字字符和其他字符的個數,
輸入格式:
輸入為10個字符,最后一個回車表示輸入結束,不算在內,
代碼如下:(PS:這個程式搞的我心態崩了)
#!/usr/bin/python # -*- coding: utf-8 -*- #a-z:97-122,A-Z:65-90,0-9:48-57, #回車,ASCII碼13 #換行,ASCII碼10 #空格,ASCII碼32 z = {"letter":0,"blank":0,"digit":0,"other":0} s = input() n = len(s) #這個判斷折騰了半天,難受 while True: if n<10: s += input() n += len(s)+1 z["blank"] += 1 else: break for i in range(0,len(s)): if ord(s[i]) == 32 or ord(s[i]) == 10: z["blank"] += 1 elif ord(s[i]) >= 97 and ord(s[i]) <=122: z["letter"] += 1 elif ord(s[i]) >= 65 and ord(s[i]) <=90: z["letter"] += 1 elif ord(s[i]) >= 48 and ord(s[i]) <=57: z["digit"] += 1 else: z["other"] += 1 #遍歷字典,昨天剛學的,今天就忘了使用keys(),欠打 for k in z.keys(): if k != "other": print("{} = {:d}, ".format(k,z[k]),end="") else: print("{} = {:d}".format(k,z[k]),end="")
這個程式用簡單的while回圈就可以的,大家可以百度看看,
重點部分:如何判斷接收的字符,測驗資料中搞了個換行輸入,第一個while我折騰了老半天,
測驗成功后,我百度看了看,發現別人寫的代碼很簡潔明了,不需要判斷ASCII碼,部分代碼如下:
for i in s:
if i.isalpha():
letter += 1
elif i.isdigit():
digit += 1
elif i.isspace():
blank += 1
else:
other += 1看來對內置的一些方法函式一定要熟記,不然只能笨方法,判斷ASCII碼,
唉,自己寫程式,總是將簡單程式復雜化,
讀書和健身總有一個在路上
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/156178.html
標籤:Python
上一篇:Python學習筆記:解耦合
下一篇:Python 運算子匯總
