Python第一章作业(中级)下

第7关:字符串拼接方式格式化输出

任务描述
本关任务:编写一个将日期格式化输出的小程序。

相关知识
为了完成本关任务,你需要掌握使用字符串拼接方式进行格式化输出的方法。

字符串拼接方式格式化输出
如下代码:

name = input( )
age = input( )
job = input( )
print("name="+name+","+"age= "+age+","+"job="+job)
当输入:
Danny
22
worker
时,会得到如下输出:
name=Danny,age =22,job=worker

编程要求
根据提示,在右侧编辑区补充代码,分三行输入年月日的整数值,要求用字符串拼接方法输出,输出格式形如:2021年04月26日。

测试说明
平台会对你编写的代码进行测试:

测试输入:
2021
04
26

预期输出:
2021年04月26日

# 实验要求
# 在三行中分别输入当前的年、月、日的整数值,按要求完成输出。
# 6 用字符串拼接方法输出,格式:2020 年09 月16 日

# 测试数据
# 输入(>>>开头的行表示输入数据)
# >>>2021
# >>>04
# >>>26

# 输出
# 2021年04月26日
# 以下为代码区

# =======================================================
year = input()                         # 输入当前年
month = input()                        # 输入当前月
date = input()                         # 输入当前日
# =======================================================
# 此处去掉注释符号“#”并补充你的代码
print(year+"年"+month+"月"+date+"日")
# =======================================================

第8关:欢迎入学

任务描述
本关任务:编写一个欢迎入学的小程序。

问题描述
开学了,你考上了武汉理工大学,校园的电子屏上显示着以下欢迎界面:

|++++++++++++++++++++++|
|                      |
|   Welcome to WHUT    |
|                      |
|++++++++++++++++++++++|


要打印上面的界面,需要编写如下代码:

print('|++++++++++++++++++++++|')
print('|                      |')
print('|   Welcome to WHUT    |')
print('|                      |')
print('|++++++++++++++++++++++|')


编程要求
根据提示,在右侧编辑区补充代码,用户输入姓名,输出以上界面后,再在下一行输出 欢迎您,XXX同学!

测试说明
平台会对你编写的代码进行测试:
测试输入:
李明
预期输出:

|++++++++++++++++++++++|
|                      |
|   Welcome to WHUT    |
|                      |
|++++++++++++++++++++++|
欢迎您,李明同学!
"""
编写程序,用户入自己的姓名,输出以下界面后,再在下一行输出“欢迎您,***同学!”
|++++++++++++++++++++++|
|                      |
|   Welcome to WHUT    |
|                      |
|++++++++++++++++++++++|
"""

my_name = input()  # 输入学生的姓名                             
########### Begin ############
# 输出以上界面
print('|++++++++++++++++++++++|')
print('|                      |')
print('|   Welcome to WHUT    |')
print('|                      |')
print('|++++++++++++++++++++++|')
# 输出“欢迎您,***同学!”
print("欢迎您,"+my_name+"同学!")
########### End ############

第9关:整数四则运算

任务描述
本关任务:编写一个能计算整数四则运算及格式化输出的小程序。

相关知识
Python 可以方便地实现计算器功能。数学意义上的加、减、乘、除在 Python 中分别以符号+、-、*、/表示。 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

试编程实现:分两行输入两个非零整数,按如下格式分四行输出加减乘除运算式。
整数1 + 整数2 = 和
整数1 - 整数2 = 差
整数1 * 整数2 = 积
整数1 / 整数2 = 商

示例代码:

a = 5
b = 10
c = a + b
# 输出带格式计算结果
print('a+b=', c)               # a+b= 15,输出两个对象,默认空格分隔
print('a+b=', c, sep='')       # a+b=15,用空字符串分隔,消除空格
print(a,'+',b,'=', a+b)      # a + b = 15,输出五个对象,默认空格分隔
编程要求
根据提示,在右侧编辑区补充代码,分两行输入两个非零整数,分四行输出四则运算表达式。

测试说明
平台会对你编写的代码进行测试:

测试输入:
1
2

预期输出:
1 + 2 = 3
1 - 2 = -1
1 * 2 = 2
1 / 2 = 0.5

"""
试编程实现分两行输入两个非零整数,并在4 行中按顺序输出两个数的加、减、乘、除的计算结果。
要求输出与如下示例格式相同,符号前后各有一个空格。
"""

#输入整数变量a和b,定义输入函数
##############Begin##################
a = int(input())
b = int(input())
##############End####################

#a和b之间进行四则运算并输出
##############Begin##################
print(f'{a} + {b} = {a + b}')
print(f'{a} - {b} = {a - b}')
print(f'{a} * {b} = {a * b}')
print(f'{a} / {b} = {a / b}')


##############End####################

第10关:浮点类型四则运算

任务描述
本关任务:编写一个小程序,分两行输入两个非零浮点数,并在 4 行中按顺序输出两个数的加、减、乘、除计算式和计算结果。

相关知识
str.format()方法详解
str.format() 方法通过字符串中的花括号 {} 来识别替换字段 replacement field ,从而完成字符串的格式化。
替换字段 由字段名 field name 和转换字段 conversion field 以及格式说明符 format specifier 组成,即一般形式为 {字段名=转换字段:格式说明符}。
字段名分为简单字段名 simple field name 和复合字段名 compound field name。
而转换字段和格式说明符都是可选的。
简单字段名有三种写法:

省略不写 ,直接{}
数字,即{十进制非负整数}
变量名 ,即{合法的 Python 变量名}
格式说明符里的精度:

精度指定了小数点后面要展示多少位小数
对于非数字类型,精度指定了最大字段宽度
整数类型不能指定精度
str.format()方法示例

print('我叫{},今年{}岁。'.format('小明', 18))
"""
我叫小明,今年18岁。
"""
print('{0:{1}}'.format(3.14159, '.4f'))
"""
3.1416
"""
问题描述
试编程实现分两行输入两个非零浮点数,并在 4 行中按顺序输出两个数的加、减、乘、除的计算式和计算结果。计算结果使用 str.format() 方法保留小数点后 3 位数字。

示例代码:

a = 5.2
b = 10.2
c = a + b
# 输出带格式计算结果
print('{} + {} = {:.3f}'.format(a,b,c) )  # 5.2 + 10.2 = 15.400 
测试说明
平台会对你编写的代码进行测试:

测试输入:

2.66
3.1415926

预期输出:
2.66 + 3.1415926 = 5.802
2.66 - 3.1415926 = -0.482
2.66 * 3.1415926 = 8.357
2.66 / 3.1415926 = 0.847

'''
试编程实现分两行输入两个非零浮点数,并在4 行中按顺序输出两个数的加、减、乘、除的计算式和计算结果。计算结果str.format()方法保留小数点后3位数字。要求输出与如下示例格式相同,符号前后各有一个空格。
'''

#输入浮点型变量a和b,定义输入函数
#############Begin##############
a = float(input())
b = float(input())
#############End################

#a和b之间进行四则运算并输出
#############Begin################
print(f'{a} + {b} = {a + b:.3f}')
print(f'{a} - {b} = {a - b:.3f}')
print(f'{a} * {b} = {a * b:.3f}')
print(f'{a} / {b} = {a / b:.3f}')
#############End################

第11关:用户输入数值和符号

任务描述
本关任务:编写一个根据用户输入的数值和运算符进行四则运算的小程序。

相关知识
为了完成本关任务,你需要掌握:

evel()函数
eval() 函数用于执行一个字符串表达式,并且返回该表达式的值。在 Python 中 evel()函数 的语法格式为 eval(expression, globals=None, locals=None),注意后面还有 globals 参数和 locals 参数。

expression:表达式,上面提到 evel 函数用于执行一个字符串表达式,表达式的内容就放在此处。
globals:该部分必须是字典!必须是字典!必须是字典!否则程序会出错。当定义了 globals 参数之后eval函数的作用域会被限定在globals中。
locals:该参数掌控局部的命名空间,功能和 globals 类型,不过当参数冲突时,会执行 locals 处的参数。
expression参数示例
代码示例:

a=10
print(eval("a+1"))
运行结果为11。

解析:因为此处没有指定 globals 和 locals,所以直接执行 expression 部分的内容。该程序的效果等价于 

a=10
print(a+1)
globals参数示例
a=10
g={'a':4}
print(eval("a+1",g))
运行结果为5。

解析:指定了 globals,所以expression 的作用域就在 globals 指定的字典范围内,此时外面的 a=10 被屏蔽,取用字典中a的值。

locals参数示例
a=10
b=20
c=30
g={'a':6,'b':8}
t={'b':100,'c':10}
print(eval('a+b+c',g,t))
运行结果为116。

解析:根据上面的知识我们知道,当有 globals 、 locals参数时,作用域在 globals 和 locals 中,前面的 a=10 , b=20 , c=30 不会被使用。 a 和 c 的值分别取字典 g 和字典 t 中的值, globals 和 locals 中都有参数 b ,此时取 locals 中的值,即有 a=6 , b=100 ,c=10,打印结果为116。

编程要求
根据提示,在右侧编辑区补充代码,实现一个能根据用户输入的数值和运算符进行四则运算的小程序。

示例代码 1:

#用户输入计算数据
a = input()          # 输入 5,默认为字符串'5'
b = input()          # 输入 10,默认为字符串'10'
c = int(a) + int(b)  # 转为整数并做假发运算
print('{}+{}={}'.format(a, b, c))  # 5+10=15,格式化输出
print(f'{a}+{b}={c}')              # 5+10=15,也是格式化输出
示例代码 2:

#用户输入数值和符号
a = int(input('请输入一个整数:'))    # 输入字符串'10',转整数10
b = int(input('请再输入一个整数:'))  # 输入字符串'5',转整数5
sign = input('请输入运算符号')  # 输入乘号字符'*' 
print(f'{eval(f"{a}{sign}{b}")}')  # 输出50   
# eval()函数把字符串f"{a}{sign}{b}"转为表达式并运算得到结果
#这里f"{a}{sign}{b}"为字符串"10*5",eval()运算后得到50
# f'{eval(f"{a}{sign}{b}")}'字符串里包含引号,此时要求内部引号与边界使用不同的引号,这里外边用的单引号',内部用的双引号"
测试说明
平台会对你编写的代码进行测试:

测试输入:
请输入一个整数:10
请再输入一个整数:6
请输入运算符号*

预期输出:
10*6=60

a = int(input('请输入一个整数:'))    
b = int(input('请再输入一个整数:')) 
sign = input('请输入运算符号')
###################Begin##################################
# eval()函数把字符串f"{a}{sign}{b}"转为计算表达式
# 字符串里包含引号时,内部引号与边界应用不同的引号
c = eval(f"{a}{sign}{b}")
print(f'{a}{sign}{b}={c}')

###################End##################################

第12关:随机出题的四则运算

任务描述
本关任务:编写一个能随机出四则运算题目的小程序。

相关知识
为了完成本关任务,你需要掌握:

random库里几个函数的用法
random.random()
随机生成(0,1)之间的浮点数。

random.randint(参数1,参数2)
随机生成指定范围内的整数,两个参数分别表示范围上限和下限。
参数 1、参数 2 必须是整数。
函数返回 [参数 1 ,参数 2] 之间的任意整数,闭区间。

import random
result = random.randint(1,10)      #返回 [1, 10] 之间的任意整数
print("result: ",result)
#输出:
#result: 6
random.randrange(上限,下限,增量)
在指定范围内按指定基数递增得到的集合中获得一个随机数。randrange( )有三个参数,前两个参数代表范围上限和下限,第三个参数是递增增量,不包括下限,包括上限。
使用方式如下:

random.randrange(0,11,2)
#随机产生范围为[0,11),间隔为2的数
#注:这里输出(0,2,4,6,8,10)中一个。
random.choice(list)
从序列中随机抽选一个数。

random.shuffle(list)
对list随机排序。
注:list的元素为数值型

示例代码 1:

# 批量生成四则运算式
# 产生10道正整数四则运算的题目,用户输入计算结果,判断输入正确与否
for i in range(10):   # 循环10次,每次产生一个新问题
    a = int(input('请输入一个整数:'))
    b = int(input('请再输入一个整数:'))
    sign = input('请输入运算符号')
    print(f'{a}{sign}{b}=', end='')  # 5+10=,格式化输出
    result = float(input())  # 用户输入计算结果
    if result == eval(f"{a}{sign}{b}"):
        print('恭喜你,回答正确')
    else:
        print('回答错误,你要加油哦!')
编程要求
根据提示,在右侧编辑区补充代码,完善一个能随机出题进行四则运算的小程序。用户在两行分别输入出题数量和参与计算的最大数字,程序随机产生一个四则运算表达式,用户输入表达式运算结果,输入正确时输出'恭喜你,回答正确',输入错误时输出'回答错误,你要加油哦!',统计并输出回答正确的题目数量并计算正确率。
输入输出格式参考示例。

测试说明
平台会对你编写的代码进行测试:

测试输入:
1
4
7

预期输出:

请输入出题数量:请输入参与计算的最大数字:4+3=恭喜你,回答正确
答对1题,正确率为100.0%

import random
random.seed(0)
def calculator(n, maximum):
    """随机产生n道正整数四则运算的题目,用户输入计算结果,
    判断输入正确与否,并统计正确率。题目保证减法不出现负数."""
    correct = 0
    for i in range(n):  # 循环n次,每次产生一个新问题
        b = random.randint(0, maximum)  # 随机产生一个maximum以内整数
        a = random.randint(b, maximum)  # 随机产生一个b到maximum以内整数,避免减法出现负数
        #################Begin##############################
        sign = random.choice('+-*/')
        if(sign == '+'):
            result = a + b
        elif(sign == '-'):
            result = a - b
        elif(sign == '*'):
            result = a * b
        else:
            result = a / b
        print(f'{a}{sign}{b}=', end='')
        answer = float(input())
        if answer == eval(f"result"):
            print("恭喜你,回答正确")
            correct +=1
        else:
            print("回答错误,你要加油哦!")
        
        #################End##############################
    print(f'答对{correct}题,正确率为{correct / n * 100}%')

if __name__ == '__main__':
    num = int(input('请输入出题数量:'))
    m = int(input('请输入参与计算的最大数字:'))
    calculator(num, m)

你可能感兴趣的:(python,java,开发语言)