Python-------实验五 作业一

一.简答题(共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

猜对了

发布了27 篇原创文章 · 获赞 3 · 访问量 1419

猜你喜欢

转载自blog.csdn.net/weixin_41860600/article/details/105484425
今日推荐