[转载] Python快速编程入门课后程序题答案

参考链接: Python list| count 方法

前言 

本文只是简单的整理了一下课后习题的编程题,具体的填空、选择、判断可以见:Python快速编程入门课后习题答案 

第一章 

1、编写一个Python程序,输出如下图效果。 

 

 ++++++++++ +        + ++++++++++ 

 

print("+++++++++++")

print("+         +")

print("+++++++++++") 

2、编写一个Python程序,输出如下语句。 

 

 学Python,来传智播客黑马程序员 学Python,来传智播客黑马程序员 学Python,来传智播客黑马程序员 学Python,来传智播客黑马程序员 学Python,来传智播客黑马程序员 

 

print("学Python,来传智播客黑马程序员")

print("学Python,来传智播客黑马程序员")

print("学Python,来传智播客黑马程序员")

print("学Python,来传智播客黑马程序员")

print("学Python,来传智播客黑马程序员") 

第二章 

1、输入直角三角形的两个直角边的长度a、b,求斜边c的长度。 

import math

a=float(input("请输入斜边 1 的长度")) #输入实数

b=float(input("请输入斜边 2 的长度")) #输入实数

c=a*a+b*b #计算,得到的是斜边的平方

c=math.sqrt(c) #开方,得到的是斜边长

print("斜边长为:",c) #显示,一项是字符串,一项是 c 表示的斜边长

 

2、编写一个程序,用于实现两个数的交换。 

# 用户输入

x = input('输入 x 值: ')

y = input('输入 y 值: ')

# 不使用临时变量

x,y = y,x

print('交换后 x 的值为: {}'.format(x))

print('交换后 y 的值为: {}'.format(y)) 

第三章 

1、编写一个程序,使用for循环输出0~10之间的整数。 

for i in range(1,11):

    print(i)

 

2、编写一个程序,判断用户输入的数是正数还是负数。 

a=int(input("请输入一个数:"))

if a>0:

    print("a是一个正数")

elif a<0:

    print("a是一个负数")

else:

    print("a等于0")

 

3、编写一个程序,输出九九乘法表。 

i=1

while i<10:

    j=1

    while j<=i:

        print("%d*%d=%-2d "%(i,j,i*j),end='')

        j+=1

    print("\n")

    i+=1

 

第四章 

1、接收输入的一行字符,统计出字符串中包含数字的个数。 

myStr = input("请输入任意字符串:")

num = 0

for s in myStr:

    if s.isdigit():

        num += 1

print(num)

 

2、请输入星期几的第1个字母,用来判断是星期几,如果第1个字母一样,则继续判断第2个字母,以此类推。 

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

while True:

    myStr = input("请输入任意一个字母:")

    upMyStr = myStr.upper()

    for weekS in week:

        if upMyStr == weekS[0]:

            if weekS.startswith("M"):

                print("星期一")

            elif weekS.startswith("W"):

                print("星期三")

            elif weekS.startswith("F"):

                print("星期五")

            elif weekS.startswith("T") or weekS.startswith("S"):

                secondStr = input("请再输入任意一个字母:")

                newStr = upMyStr+secondStr

                print(newStr)

                for weekStr in week:

                    if weekStr.find(newStr,0,2) != -1:

                        if newStr == "Tu":

                            print("星期二")

                        elif newStr == "Th":

                            print("星期四")

                        elif newStr == "Sa":

                            print("星期六")

                        elif newStr == "Su":

                            print("星期日")

                        break

            break

 

3、编写一个程序,计算字符串中子串出现的次数。 

str = "Hello,welcome to itheima!!"

print(str.count("o"))

 

第五章 

1、编写一个函数,用于判断用户输入字符串是否由小写字母和数字构成。 

def message():

    myStr = input("请输入密码,只能为小写字母和数字:")

    if myStr.isalnum() and myStr.lower() == myStr:

        print("符合要求")

    else:

        print("不符合要求") 

2、请根据下述需求,编写一个程序。 

 

 用户输入一个字符串,将下标为偶数的字符提出来合并为一个新的字符串A,再将下标为奇数的字符提出来合并成为一个新的字符串B,再将字符串A和B连接起来并且输出。 

 

arr = []

evenStr = ""

oddStr = ""

message = input("请输入任意字符串:")

for string in message:

    arr.append(string)

for eStr in (arr[::2]):

    evenStr = evenStr+eStr

for oStr in (arr[1::2]):

    oddStr = oddStr+oStr

print(evenStr+oddStr)

 

3、请编写一个程序,用于统计字符串中每个字母出现的次数(字母忽略大小写,a和A看做是一个字母),统计出的结果,请按照[‘a’:3,’b’:2]的格式输出。 

arr = []

def count():

    myStr = input("请输入只包含字母的字符串:")

    if myStr.isalpha():

        newStr = myStr.lower()

        for string in newStr:

            arr.append(string)

        a = {}

        for i in arr:

            if arr.count(i) >= 1:

                a[i] = arr.count(i)

        print(a)

    else:

        print("输入的内容有误")

count()

 

4、请根据下列需求,编写一个程序。 

 

 用户输入一个字符串,请将字符串中所有字母全部后移动一位,最后一个字母放到字符串的开头,最后将新的字符串输出。 

 

arr = []

result = ""

myStr = input("请输入字符串:")

for string in myStr:

    arr.append(string)

last = arr[-1]

arr.remove(last)

arr.insert(0,last)

for new in arr:

    result = result + new

print(result)

 

5、假设有个列表存储奇数个数字,请编写程序,输出中间位置的数字。 

arr = []

n = int(input("请输入列表元素的个数(奇数):"))

for i in range(n):

    num = int(input("请输入第%d个数:"%(i+1)))

    arr.append(num)

arr.sort()

print("该列表中间位置的数字为:",arr[n//2])

 

6、已知info=[1,2,3,4,5],请通过两种编程方法,将列表变成info=[5,4,3,2,1]。 

#第一种:

arr = [1,2,3,4,5]

arr.reverse()

print(arr)

 

#第二种:

arr = [1,2,3,4,5]

arr.sort(reverse=True)

print(arr)

 

7、请编写一个函数满足下列需求: 

 

 用户输入n,然后输入n个整数到列表中,列表中的n个整数需要使用冒泡进行排序,并将排序后的结果输出。 

 

arr = []

length = int(input("请输入数字的总个数:"))

i = 0

while i < length:

   num =  int(input("输入第%d个数字:"%(i+1)))

   arr.append(num)

   i+=1

print("排序前:%s"%arr)

# 对列表排序

for i in range(length):

    flag = 0

    for j in range(1,length):

        if arr[j-1] > arr[j]:

            arr[j-1],arr[j] = arr[j],arr[j-1]

            flag = 1

    if not flag:

        break

print("排序后:%s"%arr)

 

8、请编写一个程序,实现删除列表中重复元素的功能。 

arr = []

length = int(input("请输入列表的总个数:"))

i = 0

while i < length:

   element =  input("输入第%d个元素:"%(i+1))

   arr.append(element)

   i+=1

# 列表转为集合

newList = set(arr)

print(newList)

 

9、假设有两个3×3的矩阵,请编写一个程序,计算这两个矩阵的和并输出。 

def add(a, b):

    # 下面两行保证输入的a和b是维数相同的矩阵,根据实际情况不要也可以

    assert (len(a) == len(b))

    assert (all([len(a[i]) == len(b[i]) == len(a[0]) for i in range(len(a))]))

    i, j = len(a), len(a[0])

    c = [[0] * j] * i

    for m in range(i):

        for n in range(j):

            c[m][n] = a[m][n] + b[m][n]

    return c

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

b = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]

c = add(a, b)

print(c)

 

10、请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大输出学生的信息。 

dic = {}

i=0

while i<3:

     number = input("输入学生学号:")

     name = input("输入学生姓名:")

     dic.__setitem__(number,name)

     i+=1

print("排序前:%s"%dic)

def dict2list(dic:dict):

    ''' 将字典转化为列表 '''

    keys = dic.keys()

    vals = dic.values()

    lst = [(key, val) for key, val in zip(keys, vals)]

    return lst

new = sorted(dict2list(dic), key=lambda x:x[0], reverse=False)

print("排序后:%s"%new)

 

11、已知一个字典包含若干员工信息(姓名和性别),请编写一个函数,删除性别为男的员工信息。 

def delMale(dict):

    keys = []

    values = []

    for (key,value) in dict.items():

        keys.append(key)

        values.append(value)

    for value in values:

        if value == 0:

            index = values.index(value)

            arrKey = keys[index]

            del dict[arrKey]

            values[index] = 3

            keys[index] = "占位"

dic = {"小明":0, "小红":1,"小兰":1,"小白":0}

print("删除前:%s"%dic)

delMale(dic)

print("删除后:%s"%dic)

 

12、已知一个列表存储了多个整数,请编写函数,删除列表中的素数。 

# 错误的版本

arr = [12,3,37,7,91,67,27,45,6]

def delPrime(arr):

    for element in arr:

        # 质数大于 1

        if element > 1:

            # 查看因子

            for i in range(2, element):

                if (element % i) == 0:

                    break

            else:

                arr.remove(element)

delPrime(arr)

print(arr) 

# 正确的版本

arr1 = [12,3,37,7,91,67,27,45,6]

arr2 = [12,3,37,7,91,67,27,45,6]

def delPrime(arr1):

    for element in arr2:

        # 质数大于 1

        if element > 1:

            # 查看因子

            for i in range(2, element):

                if (element % i) == 0:

                    break

            else:

                arr1.remove(element)

delPrime(arr1)

print(arr1)

 

第六章 

1、定义一个getMax()函数,返回三个数(从键盘输入的整数)中的最大值。 例如: 

 

 请输入第1个整数:10 请输入第2个整数:15 请输入第3个整数:20 其中最大值为:20 

 

def getMax():

    num1 = int(input("请输入第1个整数:"))

    num2 = int(input("请输入第2个整数:"))

    num3 = int(input("请输入第3个整数:"))

    temp = 0 # 临时变量,存放中间产生的第2大数值

    if num1 > num2:

        temp = num1

    else:

        temp = num2

    if temp>num3:

        return "其中最大值为:"+ str(temp)

    else:

        return "其中最大值为:"+ str(num3)

maxValue = getMax()

print(maxValue)

 

2、编写函数,求出“1/(1×2)-1/(2×3)+1/(3×4)-1/(4×5)+···”前n项的和,函数以n为参数,它是用户输入的。 

def sum(n):

    res = 0

    while n >= 1:

        if n%2 == 0:

            res -= 1.0/(n*(n+1))

        else:

            res += 1.0/(n*(n+1))

        n-=1

    return res

num = int(input("请输入一个整数:"))

print(sum(num))

 

3、回文数是一个正向和逆向都相同的整数,如 123454321、9889。编写函数判断一个整数是否是回文数。 

def is_palindrome(n):

    n = str(n)

    m = n[::-1]

    return n == m

result = is_palindrome(1247321)

print(result)

 

4、编写函数,判断输入的三个数字是否能构成三角形的三个边。 

def sjx(a, b, c):

    if (a + b > c and a + c > b and b + c > a):

        return "能构成三角形"

    else:

        return "不能构成三角形"

result1 = sjx(3, 4, 5)

print(result1)

result2 = sjx(1, 1, 2)

print(result2)

 

5、编写函数,求两个正整数的最小公倍数。 

# 定义函数

def lcm(x, y):

   #  获取最大的数

   if x > y:

       greater = x

   else:

       greater = y

   while(True):

       if((greater % x == 0) and (greater % y == 0)):

           lcm = greater

           break

       greater += 1

   return lcm

# 获取用户输入

num1 = int(input("输入第一个数字: "))

num2 = int(input("输入第二个数字: "))

print( num1,"和", num2,"的最小公倍数为", lcm(num1, num2))

 

第七章 

1、已知有个列表[1,2,3,4,5],让列表的每个元素加1,把结果不能被2整除的元素筛选出来。 

result = filter(lambda x:(x+1)%2, [1, 2, 3, 4, 5])

print(result)

 

第八章 

1、读取一个文件,显示除了以#开头的行以外的所有行。 

new = []

f = open('itheima.txt', 'r')#首先要有这个函数

contents = f.readlines()

for ele in contents:

    if ele.startswith('#') == False:

        print(ele)

f.close()

 

2、制作一个“密码簿”,其可以存储一个网址(如www.itcast.cn)和一个密码(如123456),请编写程序完成这个“密码簿”的增删查改功能,并且实现文件存储功能。 

# 密码薄

passwordBook = {}

def add(password, value):

    if password not in passwordBook.keys():

        passwordBook[password] = value

        save()

    else:

        print("该密码已存在")

def delete(password):

    if password in passwordBook.keys():

        del passwordBook[password]

        print(passwordBook)

        save()

    else:

        print("该密码不存在")

def modify(password, newValue):

    if password in passwordBook.keys():

        passwordBook[password] = newValue

        print(passwordBook)

        save()

    else:

        print("该密码不存在")

def find(value):

    if value in passwordBook.values():

        print("该网址存在")

    else:

        print("该网址不存在")

def save():

    f = open("password.txt","w")

    f.write(str(passwordBook))

    f.close()

def printInfo():

    print("密码簿的功能如下:")

    print("1.添加")

    print("2.删除")

    print("3.修改")

    print("4.查找")

i = 0

while i<5:

    printInfo()

    num = int(input("请输入要选择的功能:"))

    if num==1:

        web = input("请输入存入的网址:")

        password1 = input("请输入密码:")

        add(password1, web)

        print(passwordBook)

    elif num==2:

        password2 = input("请输入密码:")

        delete(password2)

    elif num==3:

        password3 = input("请输入密码:")

        value3 = input("请输入新的网址:")

        modify(password3,value3)

    elif num==4:

        value4 = input("请输入要查找的网址:")

        find(value4)

    i+=1

 

3、已知文本文件中存放了若干数字,请编写程序读取所有的数字,排序以后进行输出。 

f = open("itheima.txt","r")#首先要有这个文件

content = list(eval(f.read()))

content.sort()

print(content)

 

4、打开一个英文的文本文件,将该文件中的每一个英文字母加密后写入到一个新的文件。加密的方法是:将A变成B,B变成C,······,Y变成Z,将Z变成A;a变成b,b变成c,······,y变成z,z变成a,其他字符不变化。  

f = open("itheima.txt","r")

content = f.read()

newStr = ""

for string in content:

    temp = ord(string)

    if temp in range(65,91):

        if temp == 90:

            char1 = chr(temp-25)

            newStr += char1

        else:

            char2 = chr(temp+1)

            newStr += char2

    elif temp in range(97,123):

        if temp == 122:

            char3 = chr(temp-25)

            newStr += char3

        else:

            char4 = chr(temp + 1)

            newStr += char4

    else:

        newStr = newStr+string

f.close()

f2 = open("itheima-加密后.txt","w")

f2.write(newStr)

f2.close()

 

5、打开一个英文文本文件,编写程序读取其内容,并把其中的大写字母变成小写字母,小写字母变成大写字母。 

f = open(r'd:\1.txt','r') 

s = f.readlines() 

f.close() 

r = [i.swapcase() for i in s] 

f = open(r'd:\2.txt','w') 

f.writelines(r) 

f.close()

 

6、编写程序,把包含学生成绩的字典保存为二进制文件,然后再读取内容并显示。 

import pickle 

d = {'张三':98,'李四':90,'王五':100} 

print(d) 

f = open('score.dat','wb') 

pickle.dump(1,f) 

pickle.dump(d,f) 

f.close 

f = open('score.dat','rb') 

pickle.load(f) 

d = pickle.load(f) 

f.close() 

print(d) 

 

第九章 

1、假设成年人的体重和身高存在此种关系:                   身高(厘米)-100=标准体重(千克) 

 

 如果一个人的体重与其标准体重的差值在正负5%之间,显示“体重正常”,其他显示“体重超标”或者“体重不超标”。编写程序,能处理用户输入的异常,并且使用自定义异常类来处理身高小于30cm,大于250cm的异常情况。 

 

class HeightException(Exception):

    pass

try:

    height = int(input("请输入您的身高:"))

    if height<30 or height>250:

        raise HeightException

    weight = int(input("请输入您的体重:"))

    weightS = height-100

    if weight > weightS and weight-weightS < 0.05*weightS:

        print("体重达标")

    elif weight < weightS and weightS-weight < 0.05*weightS:

        print("体重达标")

    else:

        print("体重不达标")

except HeightException:

    print("您输入的身高有误")

 

2、录入一个学生的成绩,把该学生的成绩转换为A优秀、B良好、C合格、D不合格的形式,最后将该学生的成绩打印出来。要求使用assert断言处理分数不合理的情况。 

try:

    score = int(input("请输入学生的成绩:"))

    if score>=90 and score<=100:

        print("A:优秀")

    elif score>=80 and score<90:

        print("B:良好")

    elif score>=60 and score<80:

        print("C:合格")

    else:

        assert score>60,"D:不及格"

except Exception as result:

    print("低于60分:\n",result)

 

第十章  

1、建一个模块文件。在该文件中,定义一个函数,用于交换两个数的值。 

def changeNum1AndNum2(num1, num2):

    temp = num1

    num1 = num2

    num2 = temp

    return (num1, num2)

 

第十一章 

1、设计一个Circle(圆)类,包括圆心位置、半径、颜色等属性。编写构造方法和其他方法,计算周长和面积。请编写程序验证类的功能。 

class Circle:

    def __init__(self,tup, radius, color):

        self.center = tup

        self.radius = radius

        self.color = color

    def perimeter(self):

        return 3.14 * 2 * self.radius

    def area(self):

        return 3.14 * self.radius * self.radius

circle = Circle((0,0),5,"蓝色")

print(circle.perimeter())

print(circle.area())

 

2、设计一个课程类,包括课程编号、课程名称、任课教师、上课地点等属性,把上课地点变量设为私有的,增加构造方法和显示课程信息的方法。 

class Curriculum:

    def __init__(self):

        self.number = 1001

        self.name = "语文"

        self.teacher = "小明"

        self.__address = "2号教学楼3层305室"

    def __str__(self):

        return """

            课程编号:%d

            课程名称:%s

            任课教师:%s

            上课地点:%s

        """%(self.number,self.name,self.teacher,self.__address)

curri = Curriculum()

print(curri)

 

第十二章 

1、设计一个表示学生的类:Student,该类的属性有)name(姓名,age(年龄),scores(成绩,包含语文、数学和英语三科成绩,每科成绩的类型为整数),另外此类还有3个方法。 

 

 (1)获取学生的方法:get_name(),返回类型为str。 (2)获取年龄的方法:get_age(),返回类型为int。 (3)返回3门科目中最高的分数:get_course(),返回类型为int。 

 

class Student(object):

    # 构造方法

    def __init__(self, name, age, scores):

        self.__name = name     # 姓名

        self.__age = age       # 年龄

        self.__scores = scores # 分数

    def get_name(self):

        return self.__name

    def get_age(self):

        return self.__age

    def get_course(self):

        return max(self.__scores)

stu = Student('小丸子', 18, [89, 90, 91])

print("姓名:%s"%(stu.get_name()))

print("年龄:%s"%(stu.get_age()))

print("最高分:%s"%(stu.get_course()))

 

2、设计一个表示动物的类:Animal,其内部有一个color(颜色)属性和call(叫)的方法。再设计一个表示Fish(鱼)类,该类中有tail(尾巴)和color属性,以及一个call(叫)方法。 提示: 让Fish类继承自Animal类,重写init和call方法。 

class Animal(object):

    def __init__(self, color):

        self.color = color #颜色

    def call(self):

        print("动物叫")

class Fish(Animal):

    def __init__(self, color):

        super().__init__(color)

        self.tail = True

    def call(self):

        print("-%s的鱼在吐泡泡-"%self.color)

fish = Fish("蓝色")

fish.call()

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值