一.简答题(共7题,120.0分)
1 输入梯形的上底,下底和高,设计函数,输出梯形面积。
我的答案:
def S(a,b,h):
if a>0 and b>0 and h>0:
return (a+b)*h/2
a =int(input('请输入梯形上底a:'))
b = int(input('请输入梯形下底b:'))
h = int(input('请输入梯形下底h:'))
print('输出梯形的面积:',S(a,b,h))
运算结果:
请输入梯形上底a:2
请输入梯形下底b:8
请输入梯形下底h:2
输出梯形的面积: 10.0
2 运用函数调用方法求1!+2!+…+n!
我的答案:
x = int(input("请输入n(不小于1):"))
def f(n):
a = 0
Sum = 0
for i in range (1,n+1):
a+=i
Sum+=a
print('1!+2!+...+ %d!=%d'% (i,Sum))
f(x)
运算结果:
请输入n(最好大于2):4
1!+2!+…+ 4!=20
3 编写一个函数,输入三个数,作为三角形的三个边长,计算三角形的面积。海伦公式:p=(x+y+z)/2 S=sqrt(p*(p-x)(p-y)(p-z))
我的答案:
def S(x,y,z):
p=(x+y+z)*0.5
w = (p*(p-x)*(p-y)*(p-z))**0.5
print("三角形的面积为:",w)
a = int(input("请输入三角形的边长a:"))
b = int(input("请输入三角形的边长b:"))
c = int(input("请输入三角形的边长c:"))
S(a,b,c)
运算结果:
请输入三角形的边长a:3
请输入三角形的边长b:4
请输入三角形的边长c:5
三角形的面积为: 6
4
定义函数接收年份和月份,返回对应月份有多少天。
(20.0分)
正确答案:
def get_days_in_month(year,month):
if month == 4 or month == 6 or month == 9 or month == 11:
return 30
elif month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
return 31
else:
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
return 29
else:
return 28
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
days = get_days_in_month(year,month)
print(year, "年", month, "月", "有",days,"天")
我的答案:
def year_month(year,month):
a = [0,31,29,31,30,31,30,31,31,30,31,30,31]
b = [0,31,28,31,30,31,30,31,31,30,31,30,31]
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
print('该月有%d天' % (a[month]))
else:
print('该月有%d天' % (b[month]))
y = int(input("请输入年份:"))
m = int(input("请输入月份:"))
year_month(y,m)
运算结果:
请输入年份:1999
请输入月份:6
该月有30天
5 编写函数接收一个时间(时分秒),返回该时间的下一秒。
(20.0分)
正确答案:
def get_next_second(hour,minute,second):
hour = int(hour)
minute = int(minute)
second = int(second)
second += 1
second = second % 60
if second == 0:
minute += 1
minute = minute % 60
if minute == 0:
hour += 1
hour = hour % 24
return [hour,minute,second]
time = input("请输入时间:")
time = time.split(" ")
print("下一秒的时间是:",get_next_second(time[0],time[1],time[2]))
我的答案:
import datetime
def time(time):
time=datetime.datetime.strptime(time,"%H:%M:%S")+datetime.timedelta(seconds=1)
print("下一秒的时间是:",time.strftime("%H:%M:%S"))
a=input("请以xx:xx:xx格式输入时间:")
time(a)
运算结果:
请以xx:xx:xx格式输入时间:22:11:10
下一秒的时间是: 22:11:11
6
编写函数,实现冒泡排序算法。
(20.0分)
正确答案:
from random import randint
def bubbleSort(lst, reverse=False):
length = len(lst)
for i in range(0, length):
flag = False
for j in range(0, length-i-1):
#比较相邻两个元素大小,并根据需要进行交换
#默认升序排序
exp = 'lst[j] > lst[j+1]'
#如果reverse=True则降序排序
if reverse:
exp = 'lst[j] < lst[j+1]'
if eval(exp):
lst[j], lst[j+1] = lst[j+1], lst[j]
#flag=True表示本次扫描发生过元素交换
flag = True
#如果一次扫描结束后,没有发生过元素交换,说明已经按序排列
if not flag:
break
lst = [randint(1, 100) for i in range(20)]
print('排序前:\n', lst)
bubbleSort(lst, True)
print('排序后:\n', lst)
我的答案:
def sort(a):
L = list(map(int, a.split()))
for i in range(len(L)):
for k in range(len(L)-1):
if L[k]> L[k+1] :
t = L[k]
L[k] = L[k+1]
L[k+1] = t
return L
a = input("请输入要排序的数:")
l=sort(a)
print('排序后:', l)
运算结果:
请输入要排序的数:9 8 2 4 3 5
排序后: [2, 3, 4, 5, 8, 9]
7 选做题: 编写程序模拟猜数游戏。程序运行时,系统生成一个随机数,然后提示用户进行猜测,并根据用户输入进行必要的提示(猜对了、太大了、太小了),如果猜对则提前结束程序,如果次数用完仍没有猜对,提示游戏结束并给出正确答案。
(20.0分)
正确答案:
from random import randint
def guessNumber(maxValue=10, maxTimes=3):
# 随机生成一个整数
value = randint(1,maxValue)
for i in range(maxTimes):
prompt = 'Start to GUESS:' if i==0 else 'Guess again:'
# 使用异常处理结构,防止输入不是数字的情况
try:
x = int(input(prompt))
except:
print('Must input an integer between 1 and ', maxValue)
else:
if x == value:
# 猜对了
print('Congratulations!')
break
elif x > value:
print('Too big')
else:
print('Too little')
else:
# 次数用完还没猜对,游戏结束,提示正确答案
print('Game over. FAIL.')
print('The value is ', value)
guessNumber()
我的答案:
import random
def guess(value,num):
for i in range(num):
gue = int(input("请输入猜测的数字:"))
if gue<value:
print("太小了")
elif gue>value:
print("太大了")
else:
print("猜对了")
break
if i==num-1:
print("游戏结束,该数字为%d"%(value))
value=random.randint(0,100)
num = int(input("请输入您要猜测的次数:"))
guess(value,num)
运算结果:
请输入您要猜测的次数:10
请输入猜测的数字:4
太小了
请输入猜测的数字:50
太小了
请输入猜测的数字:80
太大了
请输入猜测的数字:65
太大了
请输入猜测的数字:57
太小了
请输入猜测的数字:61
太大了
请输入猜测的数字:59
猜对了