題目一(統計字符串中指定類型字符的個數):
假設所有字符分為三類:字母,數字及其他字符。編寫一個函數,判斷指定字符的類型,並統計字符串中該類型字符的個數。主程序輸入一個字符串及一個字符,調用上述函數統計該字符同類型字符在該字符串中的個數。
描述:
輸入格式:
第一行輸入一個字符串,第二行輸入一個字符,不要任何提示信息。
輸出格式:
輸出指定字符類型的個數,如輸入輸出示例所示。
輸入輸出示例:
分析:
首先,我們需要遍歷第一行輸入的字符串,然后判斷其中每一個字符的字符類型,是數字還是字母(字母又要考慮大小寫),又或者是特殊符號,然后同字符類型的字符的個數,最后與第二行輸入的字符作比較,輸出與其相同類型的字符的個數。
代碼:
def function(s,ch): a=0 b=0 c=0 for i in s: if ord('0')<=ord(i)<=ord('9'): a=a+1 elif ord('a')<=ord(i)<=ord('z') or ord('A')<=ord(i)<=ord('Z'): b=b+1 else: c=c+1 if ord('0')<=ord(ch)<=ord('9'): return a elif ord('a')<=ord(ch)<=ord('z') or ord('A')<=ord(ch)<=ord('Z'): return b else: return c s=input() ch=input() print("與%c同類型的字符有%d個。"%(ch,function(s,ch)))
題目二(計算標准差):
編寫一個函數計算一系列數的標准差。
標准差定義:有一組數據S=s0,s1,s2,...,sn-1,其標准差表示為,其中
主程序輸入若干個數,調用上述函數計算這些輸入的數的標准差,並輸出。
描述:
輸入格式:
在同一行輸入若干個數,用英文逗號,分隔。
輸出格式:
標准差為:
輸入輸出示例:
分析:
首先,我們需要計算出m,按照公式,我們可以令m=sum/length(sum=sum+x),令b=b+(x-m)**2,所以可以得到d=sqrt(b/(length-1)),即為標准差。
代碼:
from math import * def fd(*a): sum = 0 length = len(a) for x in a: sum+=x m = sum/length b = 0 for x in a: b+=(x-m)**2 return sqrt(b/(length-1)) nums=eval(input()) print("標准差為%.1f"%fd(*nums))
題目三(判斷閏年):
編寫函數leap,根據“四年閏百年不閏,四百年又閏”判斷是否閏年。在主程序輸入一個年份,調用leap函數判斷其是否為閏年,並輸出判斷結果。
描述:
輸入格式:
輸入一個代表年份的整數。
輸出格式:
輸出年份是否閏年的判斷結果。
輸入輸出示例:
分析:
明確本題的判斷條件,即y%4==0 and y%100!=0返回True,或y%4==0 and y%400==0返回True,之后再判斷,若leap(y)==True,則為閏年,反之則不是。
代碼:
def leap(y): if y%4==0: if y%100!=0: return True elif y%400==0: return True else: return False y=int(input()) if leap(y)==True: print("%d年是閏年"%y) else: print("%d年不是閏年"%y)
題目四(斐波那契數列):
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。
描述:
輸入格式:
10
輸出格式:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
分析:
n=int(input()) def feibo(num): result=[0,1] for i in range(num-2): result.append(result[-2]+result[-1]) return result print(feibo(n))