实例 3.1 兔子繁殖问题(斐波那契数列)
兔子从出生后的第三个月开始,每月都会生一对兔子,小兔子成长到第三个月后也会生一对独自。初始有一对兔子,假如兔子都不死,那么计算并输出1-n个月兔子的数量
n = int(input ())
f1,f2 = 1, 1
for i in range(n):print(f1,end = ' ')f1,f2 = f2,f1+f2
实例3.5 百分法转换五分法
输入一个整数,当输入不在[0,100]区间时输出提示"DataA Error!";当输入满足要求是,用多分支语句实现百分制转5分制.实现规则是[0,60),[60,70),[70,80),[80,90),[90,100],分别输出字符EDCBA
score = int (input())
if score >100 and score <0:print("Data Error!")
elif score >= 90:print('A')
elif score >= 80:print('B')
elif score >= 70:print('C')
elif score >= 60:print('D')
else:print('E')
实例4.2 素数函数
定义一个函数,接受一个正整数的输入,判定其是否为素数.
def is_prime(n):if n < 2:return False;for i in range(2,n):if n % i == 0:return Falseelse :return Trueif __name__ == '__main__':num = int(input())print(is_prime(num))
实例5.6 分类统计字符个数
输入一个字符串,以一个回车键结束,统计字符串里的英文字母、数字和其他字符的熟练(回车符代表输入结束,不计入统计)
import stringmy_string = input()
litter,digit,other = 0,0,0
for c in my_string:if c in string.ascii_letters:litter = litter + 1elif c in string.digits:digit = digit + 1else:other = other + 1
print("litter = {} ,digit = {} , other = {}".format(litter,digit,other))
实例5.13 模拟微软序列信号
微软产品一般都有一个25位的、用于区分每份产品的产品序列号。产品序列号有5组被“-”分割开来,由字母数字混合编制的字符串组成,每组字符串是由5个字符串组成的。
如:3CVX3-BJWXM-6HCYX-QEK9R-CVG4R
每个字符曲子一下24个字母或数字:
B C E F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9
方法1:使用字符串
import randomkeySn = ''
code = "BCEFGHJKMPQRTVWXY2346789"
for i in range (5):s = ''for j in range(5):s = s + random.choice(code)if i == 0:keySn = keySn + selse :keySn = keySn +'-'+ s
print(keySn)
方法二:使用列表
import randomkeySn = []
code = "BCEFGHJKMPQRTVWXY2346789"
for i in range(5):s = random.sample(code,5)keySn.append(''.join(s))
print(keySn)
print('-'.join(keySn))
实例6.1 成绩统计分析
有10名学生的Python课程成绩为94,89,96,88,92,86,69,95,78,85,利用列表分析成绩输出平局值,最高的三个成绩,最低的三个成绩,成绩中位数
scores = [94,89,96,92,88,86,69,95,78,85]
count = len(scores)
scores.sort()
print(sum(scores)/count) #平均成绩
print("后三名:",scores[:3])
print('前三名:',scores[-1:-4:-1])
if count%2 == 0:n = int (count /2)sum1 = scores[n]sum2 = scores[n - 1]sum =(sum2+sum1)/2print("成绩中位数为:{}".format(sum))
else:n = int ((count-1)/2)print("成绩中位数为:{}".format(scores[n]))
将文件的数据读取为列表形式
scores =[]
with open('6.1 score.txt','r',encoding='utf-8') as data:for line in data:line = line.strip()line = line.split()line = int(line[1])scores.append(line)
print(scores)#以上可以简化为
scores =[]
with open('6.1 score.txt','r',encoding='utf-8') as data:for line in data:scores.append(int(line.strip().split()[1]))
print(scores)
实例6.5 文件中数据统计分析
现在有包含若干学生学习资料的文件,每位学生都有4门课程,要求读取附件文件中的数据,计算每个学生的平均成绩,并添加到最后一列,然后按照平均分升序排序后输出
输出平均分最高的学生的姓名和平均成绩
注意:如果是自己编写附件,则需要将附件中的符号全部更改为英文半角,否则会导致第三行代码报错;第四行代码意为以序号为6的元素大小比较
with open ('6.5 score.txt','r',encoding='utf-8') as f:ls = list(i.strip().split(',') for i in f)
score = [x+[sum(map(int,x[2:]))/len(x[2:])] for x in ls]
score.sort(key=lambda x:x[6])
print("{} {}".format(score[-1][1],score[-1][-1]))