【头哥-Python】1.1四则运算

第1关:整数四则运算

1.数值运算

Python 可以方便的实现计算器的功能。数学意义上的加、减、乘、除在 Python 中分别以符号“+-*/”表示。

计算两个非零整数的和差积商:

整数1 + 整数2 = 和 整数1 - 整数2 = 差 整数1 * 整数2 = 积 整数1 / 整数2 = 商

2.运行代码

"""
试编程实现分两行输入两个非零整数,并在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####################

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

1.相关知识

1. float()函数

float()函数可以将浮点数的字符串或整数转为浮点数类型,可以直接将input()做为参数,将用户输入的浮点数字符串直接转为浮点数。

  1. a = float(input())
  2. # 输入一个浮点数字符串,将其转为浮点数,例如将'3.14'转为3.14

2.str.format()方法详解

  1. str.format() 方法通过字符串中的大括号 {} 来识别替换字段 ,从而完成字符串的格式化。可以用{:.nf}控制输出浮点数精确保留小数点后n位,其中n表示保留小数位数,f表示浮点数float。
    1. print('{:.2f}'.format(3.1415926)) # 精确保留小数点后两位,结果实质上是字符串类型
    2. print('{:.3f}'.format(3.1000000)) # 精确保留小数点后三位,保留位数不足补0
    区别于用round(num,digits)函数保留小数位数,round()函数返回的是浮点数,而不是字符串,且会舍弃末尾的0
    1. print(round(3.1415926, 2)) # 3.14
    2. print(round(3.1000000, 3)) # 3.1,舍弃末尾的0,保留浮点数最短表示

2.本关任务

分两行输入两个非零浮点数,并在 4 行中按顺序输出两个数的加、减、乘、除的计算式和计算结果。计算结果用 str.format() 方法保留小数点后 3 位数字。输出格式如下,每个符号前后各保留一个空格。

  1. 浮点数1 `+` 浮点数2 = 和
  2. 浮点数1 `-` 浮点数2 = 差
  3. 浮点数1 `*` 浮点数2 = 积
  4. 浮点数1 `/` 浮点数2 = 商

 3.运行代码:

'''
试编程实现分两行输入两个非零浮点数,并在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################

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

1.相关知识

1.eval()函数

eval()函数 用于将一个字符串表达式转为Python中的对象或返回可计算表达式的值。

  1. print(eval('3 + 4'))
  2. # 将字符串当成有效的表达式来求值并返回计算结果7
  3. print(eval('pow(2, 3)'))
  4. # 将字符串当成有效的表达式来求值并返回计算结果8

2.str.format()返回字符串

str.format()返回值总是一个字符串

  1. print('{}{}{}'.format(3, '+', 4))
  2. # 结果为字符串 '3+4'
  3. print(eval('{}{}{}'.format(3, '+', 4)))
  4. # eval()将字符串'3+4'转为3+4再计算结果为7

2.本关任务

根据提示,在右侧编辑器补充代码,完善一个根据用户输入的数值和符号进行四则运算的小程序。

3.运行代码

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

###################End##################################
print(f'{a}{sign}{b}={eval(f"{a}{sign}{b}")}')   

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

1.相关知识

1. random模块用法

  1. random.randint(m,n) 随机生成在范围之内的整数,两个参数分别表示上限和下限。 m、n必须是整数。 函数返回m 和n之间的任意整数,闭区间。
 
  
  1. import random
  2. result = random.randint(1, 10) # 返回 [1, 10] 之间的任意整数
  3. print(f"取到的随机整数是: {result}") # 取到的随机整数是: 6
  1. random.choice(list) 从序列中随机抽选一个元素
 
  
  1. import random
  2. sign = random.choice(['+', '-', '*', '/']) # 从列表中随机选择一个元素
  3. # 返回 [1, 10] 之间的任意整数
  4. print(f"取到的随机符号是: {sign}") # 取到的随机整数是: /

2. 分支语句

if和else可以构建一个分支语句,满足if后面条件的时候执行if后面缩进的语句块里的语句,否则执行else后面缩进的语句块中的语句。

 
  
  1. a = input() # 输入一个整数a,例如3
  2. b = input() # 输入第二个整数b,例如5
  3. result = int(input()) # 输入a,b两个数加和的结果,例如8
  4. if result == eval(f"{a}{'+'}{b}"): # 判断结果是否正确
  5. print('恭喜你,回答正确')
  6. else:
  7. print('回答错误,你要加油哦!')

3. 函数的定义和调用

定义函数本质上是给一段程序起一个名字,方便重复调用这段程序。

  1. def 函数名(): # 函数定义
  2. pass # 缩进的一条或多条程序语句
 
  
  1. if __name__ == '__main__':
  2. pass # 缩进块里的语句用于调用函数和给函数传递参数

示例

  1. def add(m, n): # 定义函数add,调用时3传给m,5传给n
  2. """计算m和n的和并带计算表达式输出"""
  3. print(f'{m} + {n} = {m + n}') # 输出3 + 5 = 8
  4. if __name__ == '__main__':
  5. a = int(input()) # 输入3
  6. b = int(input()) # 输入5
  7. add(a, b) # 3和5做为参数传给函数add

2.编程要求

根据提示,在右侧编辑器补充代码,完善一个能随机出题进行四则运算的小程序。

3.运行代码 

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以内整数,避免减法出现负数
        sign = random.choice('+-*/')    # 随机获取一个运算符号
        #################Begin##############################
        print(f'{a}{sign}{b}=', end='')
        result = float(input())
        if result == eval(f"{a}{sign}{b}"):
             print('恭喜你,回答正确')
             correct=correct+1
        else:
                 print('回答错误,你要加油哦!')

        #################End##############################
    print(f'答对{correct}题,正确率为{correct / n * 100}%')

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

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