Python第三周课后作业

**

Python第三周课后作业

**

这一周的作业就是一些编程题目,希望对学习python的大家有帮助.
一. 简答题(共4题,100分)

  1. (简答题)

成绩转换:

  			   0-59:E

               60-69:D

               70-79:C

               80-89:B

               90-100:A

输入一个学生成绩列表,把对应的等级列表打印出来,需要设置一个结束的语句。

在做这一道题的时候,你的思路是什么呢,可以写在评论区,然后大家一起思考一下各自解题思路,一起研究一下彼此的思路,这样会有更加多的收获哦.
那么,我来说一下我的思路吧,首先,我是想输入的数据就是一个一个输入学生的成绩,然后再进行把学生的成绩一个一个地使用if语句进行判断,再把每一次判断使用一个列表记录下来,这就是这一道题的解题思路了.

在这之前,先来介绍一下eval()方法:

> Python eval() 函数 Python 内置函数 Python 内置函数
> 
> 描述 eval() 函数用来执行一个字符串表达式,并返回表达式的值。
> 
> 语法 以下是 eval() 方法的语法:
> 
> eval(expression[, globals[, locals]]) 参数 expression -- 表达式。 globals --
> 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。 locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
> 返回值 返回表达式计算结果。
> 
> 实例 以下展示了使用 eval() 函数的实例:

> >>>x = 7
> >>> eval( '3 * x' )
>  21
> >>> eval('pow(2,2)')
>  4
> >>> eval('2 + 2') 
> 4
> >>> n=81
> >>> eval("n + 4") 
> 85
> 关于eval()函数的介绍来源于 菜鸟教程,在此万分感谢菜鸟教程的帮助
def demo1():
    while True:
        score = eval(input("please input scores list"))
        if score < 0:
            break
        elif score < 60:
            list1.append("E")
        elif 70 > score >= 60:
            list1.append("D")
        elif 80 > score >= 70:
            list1.append("C")
        elif 90 > score >= 80:
            list1.append("B")
        elif 100 > score >= 90:
            list1.append("A")
        else:
            print("error..")

#创建一个用于记录的列表
score = 100
list1 = []
demo1()
print(list1)

**> 2. (简答题)

  1. 逆序输出:

输入若干整数,然后按输入的相反顺序显示这些数据。要求数据之间留一个空格。**

这里来介绍一下map()函数和split()方法

Python map() 函数
Python 内置函数 Python 内置函数

描述
map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

语法
map() 函数语法:

map(function, iterable, ...)
参数
function -- 函数
iterable -- 一个或多个序列
返回值
Python 2.x 返回列表。

Python 3.x 返回迭代器。

实例
以下实例展示了 map() 的使用方法:

Python2.x 实例
>>> def square(x) :            # 计算平方数
...     return x ** 2
...
>>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]

#提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
Python3.x 实例
>>> def square(x) :         # 计算平方数
...     return x ** 2
...
>>> map(square, [1,2,3,4,5])    # 计算列表各个元素的平方
<map object at 0x100d3d550>     # 返回迭代器
>>> list(map(square, [1,2,3,4,5]))   # 使用 list() 转换为列表
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))   # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
>>>
Python split()方法
Python 字符串 Python 字符串

描述
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串

语法
split() 方法语法:

str.split(str="", num=string.count(str)).
参数
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num -- 分割次数。默认为 -1, 即分隔所有。
返回值
返回分割后的字符串列表。

实例
以下实例展示了 split() 函数的使用方法:

实例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );       # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
以上实例输出结果如下:

['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
以下实例以 # 号为分隔符,指定第二个参数为 1,返回两个参数列表。

实例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
txt = "Google#Runoob#Taobao#Facebook"
 
第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)
 
print x
以上实例输出结果如下:

['Google', 'Runoob#Taobao#Facebook']
**以上资源来自于菜鸟教程**
# -*- coding:utf-8 -*-
# @Time : 2021-10-27 21:15
# @Author : 小青
# @File : r2.py
# @software: PyCharm



# num_list = list(map(int, input().split()))
num_list = list(map(int, input().split()))
num_list.reverse()
for i in num_list:
    print(i, end=' ')

上面使用map()函数和split()是为了将输入的字符串转化成整型进去转给num_list,方便后面进行倒转数字

  1. (简答题)计算两个3*3矩阵的积
#方法1
n1 = [[1, 2, 3],
      [1, 2, 3],
      [1, 2, 3]]

n2 = [[1, 2, 3],
      [1, 2, 3],
      [1, 2, 3]]

n3 = [[1, 2, 3],
      [1, 2, 3],
      [1, 2, 3]]

for i in range(0, 3):
      for j in range(0, 3):
            n3[i][j] = n2[i][j] * n1[j][i]

print(n3)
#方法2
#原始矩阵
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 转置后矩阵
c = []
# 结果矩阵
res = []
print("原始矩阵 a = ",end=" ")
print(a)
print("原始矩阵 b = ",end=" ")
print(b)
for i in range(3):
    temp = []
    for j in range(3):
        temp.append(b[j][i])
    c.append(temp)
print("转置后矩阵 b = ",end=" ")
print(c)
for i in range(3):
    temp = []
    for k in range(3):
        sum_temp = 0
        for j in range(3):
            sum_temp += a[i][j]*c[k][j]
        temp.append(sum_temp)
    res.append(temp)
print("相乘矩阵 res = ",end=" ")
print(res)
#这里感谢川川的这个代码
  1. (简答题) 借助列表,为小学生设计10以内的算术练习,使它具有以下功能:

(1) 提供5道加减乘除四种基本运算的题目

(2) 练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否正确并显示出相应的信息

统计共回答的题目数以及正确率

# -*- coding:utf-8 -*-
# @Time : 2021-10-27 21:32
# @Author : 小青
# @File : r4.py
# @software: PyCharm



import random


def show_question():

    #使用双引号表示字符串
    symbol = " "
    if 0 <= int(random.random()*10) and int(random.random()*10) < 2.5:
        symbol = " + "
    elif 2.5 <= int(random.random()*10) and int(random.random()*10) < 5:
        symbol = " * "
    elif 5 <= int(random.random()*10) and int(random.random()*10) < 7.5:
        symbol = " - "
    elif 7.5 <= int(random.random()*10) and int(random.random()*10) < 10:
        symbol = " / "
    else:
        symbol = " + "
    i=int(random.random()*10)
    j=int(random.random()*10)
    if symbol == " / ":
        j += 1
    print(i, end="")
    print(symbol, end="")
    print(j)
    return i,j,symbol



def check(i,j,sysbol,ans):
    if sysbol == " + ":
        if i + j == int(ans):
            print("正确")
            return 1
        else:
            print("错误")
            return 0

    if sysbol == " - ":
        if i - j == int(ans):
            print("正确")
            return 1
        else:
            print("错误")
            return 0
    if sysbol == " * ":
        if i * j == int(ans):
            print("正确")
            return 1
        else:
            print("错误")
            return 0
    if sysbol == " / ":
        if i / j == int(ans):
            print("正确")
            return 1
        else:
            print("错误")
            return 0



print("以下是五道随机题目,请完成")
flag = 0
i = 1
for i in range(1, 6):
    print("第"+str(i)+"个问题~~")
    temp=show_question()
    ans=input("请输入问题答案")
    flag += check(temp[0],temp[1],temp[2],ans)
print("正确率为:", end="")
print(flag/5*100, end="")
print("%")


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值