关于python输入a,b,c三个值输出最大值和最小值的一些思考

  • Post author:
  • Post category:python




关于python输入a,b,c三个值输出最大值和最小值的一些思考

今天开始学python不久的表弟让我给他讲题引发的一些思考:



题目:输入a,b,c三个值输出最大值和最小值



写法1:

为了能让他完全理解,最基本的写法

a = int(input("请依次输入a的值:"))
b = int(input("请依次输入b的值:"))
c = int(input("请依次输入c的值:"))
if a > b:
    max_num = a
    min_num = b
else:
    max_num = b
    min_num = a
if min_num > c:
    min_num = c
if max_num < c:
    max_num = c
print('最大值为 % s 最小值为 % s ' % (max_num, min_num))

在这里插入图片描述



写法二

他说代码太长了,能不能短一些,我就教他函数了

a = int(input("请依次输入a的值:"))
b = int(input("请依次输入b的值:"))
c = int(input("请依次输入c的值:"))
print('最大值{}, 最小值{}'.format(max(a, b, c), min(a, b, c)))

在这里插入图片描述



写法三

他说,能不能更短一些,为了面子,我就想了一下

num = input("请依次输入a b c的值(中间用空格隔开):")
print(f'最大值为{max(list(map(int, num.split())))},最小值为{min(list(map(int, num.split())))}')

在这里插入图片描述



总结:三种方法顺便教会了他三种格式化输出方法

最后,他说能不能一行实现,我暂时还没有想到。为了面子,只是这样胡弄他下。

num = input("请依次输入a b c的值(中间用空格隔开):"); print(f'最大值为{max(list(map(int, num.split())))},最小值为{min(list(map(int, num.split())))}')

在这里插入图片描述



补充

python高级语法

#  lambda 函数使用
a = lambda x: x + 2
print(a(2))  # 4

b = lambda x, y: x ** y
print(b(2, 3))  # 8

#  列表推导式 和 lambda 函数结合使用
li1 = [i for i in range(10) if i % 2 == 0]
print(li1)  # [0, 2, 4, 6, 8]

# 对列表内的各个元素按照某条件排序
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
print(sorted(students, key=lambda s: s[2]))  # 按年龄排序   [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

my_list = [3, 5, -4, -1, 0, -2, -6]
print(sorted(my_list, key=lambda x: abs(x)))  # 按绝对值排序  [0, -1, -2, 3, -4, 5, -6]

# 字典推导式
dic1 = {'name': i for i in range(6) if i == 4}
print(dic1)  # {'name': 4}

dic2 = {index: i for index, i in enumerate(range(6))}
print(dic2)  # {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5}

#  map  reduce filter  用法
from functools import reduce
import math

# map 对sequence中的item依次执行function(item)  然后再对可迭代对象依次进行作用
# 对列表求算术平方根
map_list = [4, 9, 16, 25, 36]
print(list(map(lambda x: math.sqrt(x), map_list)))  # [2.0, 3.0, 4.0, 5.0, 6.0]

# filter  对sequence中的item依次执行function(item)  filter然后再根据返回值True或者False决定留哪一个值
# 求1~20之间的偶数
print(list(filter(lambda x: x % 2 == 0, range(1, 21))))  # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

# reduce function参数是一个有两个参数的函数,reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。
#  求1到5之和
print(reduce(lambda x, y: x + y, range(1, 6)))  # 15
#  上式计算原理  ((((1+2)+3)+4)+5)

# 补充zip
a = ['xiaoming', 'xiaoli', 'xiaowang']
b = [24, 25, 28]
print(list(zip(a, b)))  # [('xiaoming', 24), ('xiaoli', 25), ('xiaowang', 28)]
print(dict(zip(a, b)))  # {'xiaoming': 24, 'xiaoli': 25, 'xiaowang': 28}

dd = list(zip(a, b))
print(*zip(dd))  # (('xiaoming', 24),) (('xiaoli', 25),) (('xiaowang', 28),)



版权声明:本文为brytlevson原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。