python语言程序设计_梁勇—第五章练习题重点题目答案

1、(统计正数和负数的个数后计算这些数的平均值)编写程序来读入不指定个数的整数,然后决定已经读取的整数中有多少个正数和负数并计算这些输入值

def calculate_avg():
    sum = 0
    positive = 0
    negative = 0
    while True:
        num = eval(input("Enter an integer,the input ends if it is 0:"))
        if num != 0:
            if num > 0:
                positive += 1
            elif num < 0:
                negative += 1
        sum += num
        avg = sum /(positive + negative)
        if num == 0:
            print("The number of positive is %d"%positive)
            print("The number of positive is %d"%negative)
            print("The total is %d"%(positive+negative))
            print("The average is %f"%avg)
            break

2、(累加) 产生两个在 1 到 15 之间的随机数的加法问题,显示回到正确的次数和时间

import random
import time

def random_add():
    correctCount = 0
    count = 0
    number_of_questions = 5
    startTime = time.time()

    while count < number_of_questions:# 控制答题次数
        number1 = random.randint(1,15)
        number2 = random.randint(1,15)

        if number1 < number2:
            number1,number2 = number2,number1

            answer = eval(input("What is "+str(number1)+"+"+str(number2)+"?"))
            if number1+number2 == answer:
                print("you are correct!")
                correctCount += 1
            else:
                print("your answer is wrong.\n",number1,"+",
                      number2,"is",number1+number2)
            count += 1

        endTime = time.time()
        testTime = int(endTime -startTime)
        print("Correct count is", correctCount,"out of ",
              number_of_questions,"\nTest time is ",testTime,"seconds")

3、重量转换表格

def weight_transfer_excel():
    print("     重量转换表")
    print("_____________________")
    print("|  KG   |   pounds  |")
    for i in range(1,10):
        print("|    ",i," |",format(i*2.2,'.1f'))
    for i in range(10,100):
        print("|   ",i," |",format(i*2.2,'.1f'))
    for i in range(100,200):
        print("|  ",i,"| ",format(i*2.2,'.1f'))

4、计算未来学费,假设大学今年的学费是10000美元,且以每年5%增长。编写程序计算十年之后的学费以及从现在开始到十年后大学四年的总学费

def calculate_tuition():
    tuition = 10000
    rate = 0.05
    year = 10
    sum = 0
    for i in range(year):
        tuition = tuition * (1+rate)
        sum += tuition
    print("十年后的学费为:%f 十年总的学费为:%f"%(tuition,sum))

5、(找出可被5和6同时整数的数) 编写程序编写找出100和1000之间所有被5和6同时整除的数,每行显示10个数,这些数被一个空行隔开

def find_the_num():
    count = 0
    for i in range(100,1001):
        if i % 5 == 0 and i % 6==0:
            count += 1
            if count % 10 != 0:
                print(i,end='   ')
            else:
                print(i,end="\n")

6、(计算最大公约数) 找出两个整数n1、n2的最大公约数的解决方案,首先,找出二者最小的数d,然后依次递减的顺序去找二者的公因子,第一个数就是二者的最大公约数

def greatest_common_divisor():
    n1 = eval(input("Enter the first integer:"))
    n2 = eval(input("Enter the second integer:"))
    d = min(n1,n2)
    for i in range(d,1,-1): # range()函数步长问题:https://www.cnblogs.com/Lambda721/p/7776600.html
        if n1 % i == 0 and n2 % i == 0:
            print("二者的最大公约数为:%d"%i)
            break
    else:
        print("二者无公约数")

7、(显示ASCII字符表)编写程序显示ASCII字符表!到~的字符。每行显示十个字符,字符被一个空格隔开

def print_ASSII():
    count = 0
    for i in range(33,127):
        count += 1
        if count % 10 == 0:
            print(chr(i),end='\n')
        else:
            print(chr(i),end=' ')

8、(找出一个整数的所有因子) 编写程序读取一个整数,然后显示它所有的最小因子,也称为素因子

# 判断素数,二因子分解
def isprime(num):
    for i in range(2,num):
        if num % i == 0:
            return False
    else:
        return True

#获取所有约数
def get_factor(num):
    return [x for x in range(1,num) if num % x == 0]


def primefactor(num):
    if isprime(num):
        return [1,num]
    factors = get_factor(num)
    List = []
    consult = num
    for i in range(1,len(factors)):
        if consult == 1:
            break
        while True:
            if consult % factors[i] != 0:
                break
            if isprime(factors[i]):
                consult /= factors[i]
                List.append(factors[i])
            else:
                List.append(factors[i])
                break

    return List

9、(显示一个金字塔) 编写程序提示用户输入一个在1到15之间的整数,然后显示一个金字塔

import math
def Pyramid():
    n = eval(input("请输入金字塔层数:"))
    for i in range(n):
        m = 0
    for i in range(n):
        a = n - i
        m += pow(10, i)
        for j in range(a):
            print(' ', end='')
        print(pow(m, 2))

10、(利用循环显示四种模式) 使用嵌套循环在四个独立的程序中显示下面的四种模式

def formA():
    for i in range(1,8):
        for j in range(1,i):
            print(j,end="  ")
        print()

def formB():
    for i in range(7,1,-1):
        for j in range(1,i):
            print(j,end="  ")
        print()


def formC():
    for i in range(1,8):
        for j in range(8-i):
            print("  ",end='')
        for j in range(1,i):
            print(j,end=' ')
        print("\n")

def formD():
    for i in range(7,1,-1):
        for j in range(7-i):
            print("  ",end='')
        for j in range(1,i):
            print(j,end=" ")
        print()

11、(显示闰年)编写程序显示21世纪里所有的闰年,每行显示10个闰年,这些年被一个空格隔开

def leapYear():
    count = 0
    for year in range(2000,2101):
        if (year % 4 == 0 and year % 100 != 0)or(year % 400 == 0):
            print(year,end='  ')
            count += 1
            if count % 10 == 0:
                print('',end="\n")

12、(显示每个月的第一天) 编写程序提示用户输入年份以及该年的第一天是星期几,然后在控制台上显示该年每个月的第一天是星期几

import calendar as cal

def calculate_the_week(year,m,q):
    week_day = ['Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
    if m == 1 or m == 2:
        m += 12
        year -= 1
    k = year % 100
    j = (year / 100)//1
    h = ((q + (26*(m + 1)/10)//1) + k + ((k/4)//1) + ((j/ 4) //1+5 *j)) % 7
    print("Day of the day is %s"%week_day[int(h)])

def Displays_the_first_day():
    FORMAT = "%d-%d-%d\t"
    year = eval(input("Enter year :(e.g.,2008):"))
    for m in range(1, 13):
        d = cal.monthrange(year, m)
        print(FORMAT % (year, m, 1))
        calculate_the_week(year, m, 1)
        print(FORMAT % (year, m, d[1]))
        calculate_the_week(year, m, d[1])
        print("",end="\n")

13、(完全数)如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数

def get_factor(num):
    return [x for x in range(1,num) if num % x == 0]

def perfect_num():
    for i in range(1,10001):
        list1 = get_factor(i)
        sum = 0
        for j in range(len(list1)):
            sum += list1[j]
        if i == sum:
            print("完全数为:",i)

推荐各位小可爱们一首炒鸡好听的歌,疗愈
在这里插入图片描述

5.1试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序输出 5.3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL、DL中。 5.4 试编写程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NOT MATCH’。 5.5 试编写程序,要求能从键盘接收一个个位数N,然后响铃N次。 5.6 编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中的数据的个数显示出来。 5.7 试编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它放在AX中。 5.8 把AX中存放的16位二进制数K看作是8个二进制的“四分之一字节”。试编写一个程序,要求数一下值为3(即11B)的四分之一字节数,并将该数在终端上显示出来。 5.9 试编写一汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 5.10 设有一段英文,其字符变量名为ENG,并以$字符结束。试编写程序,查对单词SUN在该文中的出现次数,并以格式”SUNXXXX“显示出次数。 5.11 从键盘输入一系列以$为结束的字符串,然后对其中的非数字字符进行计数,并显示出计数结果。 5.12 有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。 5.13 在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字,如有,则把CL的第五位置1,否则置0. 5.14 在首地址为TABLE的数组中按递增次序存放着100H个16位补码数,试编写一个程序把出现次数最多的数及其出现的次数分别放在AX和CX中。 5.15 数据段中已定义了一个有N个字数据的数组M,试编写程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。 5.16 在首地址为DATA的字数组中,存放了100H个16位补码数,试编写一个程序求出它们的平均值放在AX寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。 5.17 试编写一个程序,把AX中的十六进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中,例如:当(AX)=2A49H时,程序执行完后,MEM中的4个字节的内容为39H,34H,41H和32H。 5.18 把0~100D之间的30个数存入以GRADE为首地址的30个字数组中,GRADE+i表示学号i+1的学生的成绩。另一个数组RANK为30个学生的名次表,其中RANK+i的内容是学号为i+1的学生的名次。编写程序,根据GRADE中的学生成绩,将学生名次填入RANK数组中。 5.19 已知数组A包含15个互不相等的整数,试编写程序,把既在A中又在B中出现的整数存在于数组中C中。 5.20 设在A,B和C单元中存放着三个数,若三个数都不是0,则求出三树之和并存放于D单元中;其中有一个数为0,则把其他两个数也清零。试编写程序
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值