技术题目仅2道编程题目。
难度简单,涉及编程逻辑也十分简单,主要考察编程基本功和细心程度。
复盘来看第一题犯了比较低级的错误,涉及数据类型转化。
- Python学习(5):hecb23届科技类提前批笔试
- 题目1.输入一个整数,要求输出阶乘结果的尾零数。
- 1. 思路
- 2. 完整代码:进行了基于问题的提示改良
- 3. 知识点总结
- 题目2.输入两行,第一行是输入产品数目,第二行为对应产品编号(从a-z和A-Z),由空格分隔。某些编号对应笔记本,某些对应台式机,题目给出笔记本编号范围,要求返回输入产品中台式机个数。
- 1.思路:
- 2.完整代码:进行了基于实际问题的输出和提示改良
计算阶乘——转化为字符串——while循环产看末尾字符是否为字符0,每次循环删除字符最后一位,一旦不符合循环停止
2. 完整代码:进行了基于问题的提示改良#阶乘尾零数.py
num=eval(input('请输入一个整数:'))
#计算阶乘
nums=1
for i in range(num):
nums=nums*(i+1)
#阶乘结果转换为字符串
numstr=str(nums)
#循环查找尾数
count=0
while numstr[-1]=='0':
count=count+1
numstr=numstr[0:-1]
#输出结果
print('整数{}的阶乘为{:,},其尾零数为{}个'.format(num,nums,count))
3. 知识点总结
- 计算阶乘的方法:
- for循环累乘
num=1 for i in range(a+1): num*=i
- math中的factorial()
import math value=math.factorial(N)
- functools中的reduce和lamda
from functools import reduce num=reduce(lambda x,y:x*y, range(1,7))
- 递归
def num(N): if N==0: return 0 else: return n*num(n-1)
- 条件循环:达到条件结束循环
常用while循环。也可以使用for…break。
对比:while是有条件循环,for一般是计数循环,通常不需要中途跳出。
将编号分割成逗号分隔的数组——for循环遍历搜索,if查看是否在笔记本编号范围
2.完整代码:进行了基于实际问题的输出和提示改良#台式机数目.py
numOfProduct=eval(input('请输入检测电脑产品数目:'))
#虽然看起来输入数目有些冗余,
#但是ID的数组容易在操作中进行改变,
#而输入可以在程序中作为不变变量进行使用。'''
prodID=input('请输入检测电脑产品编号,用空格分割:')
#This is a string with IDs each of one letter (a-z & A-Z)
#with ' ' to be separator
prodID=prodID.split()
count1=numOfProduct#台式机计数:总数-笔记本
for i in range(numOfProduct):
if prodID[-1] in ('e','o','l','f','E','O','L','F'):
#These are IDs of laptop
count1-=1
prodID=prodID[0:-1]
count2=numOfProduct-count1#笔记本计数:总数-台式机
print('本次检测电脑产品共{}台,其中台式机{}台,笔记本{}台'.format(numOfProduct, count1,count2))#输出位台式机数目



