Python每日一练(14)-一行代码实现各种功能

1. 一行代码输出1~100个数

Python代码非常简洁、高效,使用C语言100行代码实现的功能,Java通常需要10行代码,而python只需一行代码。试一试,只用一行代码,实现1到100数字的列输出。实现效果如下图所示。
在这里插入图片描述
示例代码如下:

# 第一种写法
print("\n".join(map(str, range(1, 101))))
# 第二种写法
print("\n".join([str(i) for i in range(1, 101)]))
# 记住一定要将整数转为字符串之后才能使用join 否则报错

2. 一行代码输出所有大写字母

只用1行代码,输出所有大写字母。运行效果如下图所示。
在这里插入图片描述
示例代码如下:

# 第一种写法
print(" ".join(chr(i) for i in range(65, 91)))
# 第二种写法
print(" ".join(map(chr, range(65, 91))))

3. 一行代码输出20以内的奇数

只用1行代码,生成20以内的奇数。运行效果如下图所示。
在这里插入图片描述
示例代码如下:

# 第一种写法:
print("\n".join(map(str, range(1, 20, 2))))
# 第二种写法:
print("\n".join([str(i * 2 + 1) for i in range(10)]))

4. 一行代码计算1~100的和

只用1行代码,计算1-100(包括1和100)之间所有数的和。运行效果如下图所示。
在这里插入图片描述

# 第一种写法:
print(f"1~100所有数的和: {sum(range(1, 101))}")
# 第二种写法:
print(f"1~100所有数的和: {(1 + 100) * 100 // 2}")
# 第三种写法:
print(f"1~100所有数的和: {__import__('functools').reduce(lambda x, y: x + y, range(101))}")

5. 一行代码算指定数之间的和

只用一行代码,计算输入的小数和大数(包含小数和大数之间)所有数的和,运行效果如下图所示。
在这里插入图片描述

print(f"小数和大数之间所有数的和为: {sum(range(int(input('小数: ').strip()), int(input('大数: ').strip()) + 1))}")

6. 一行代码输出1~50的三位编号

只用一行代码列输出1~50的三位数字编号,可以使用在zfill()方法format()函数实现,如下图所示。
在这里插入图片描述
示例代码如下:

# zfill(): 方法返回指定长度的字符串,原字符串右对齐,字符串前面填充0.
# zfill()方法语法格式: str.zfill(width)
# width: 指定字符串的长度。原字符串右对齐,前面填充0.
print("\n".join([str(i).zfill(3) for i in range(1, 51)]))
# 使用format函数
# "0>3": 0填充值 >右对齐 3宽度
print("\n".join([format(i, "0>3") for i in range(1, 51)]))
# 第三种写法:
print("\n".join(["{0:{fill}{align}3}".format(i, fill="0", align=">") for i in range(1, 51)]))
# 简写
print("\n".join(["{:0>3}".format(i) for i in range(1, 51)]))

7. 一行代码打印九九乘法表

我国古时的乘法口诀,是自上而下,从九九八十一开始,至一一得一止,与使用的顺序相反,因此古人用乘法口诀开始的两个字九九作为此口诀的名称,又称九九表、九九歌、九因歌、九九乘法表。使用一行代码,输出九九乘法表,运行效果如下图所示。
在这里插入图片描述
示例代码如下:

print('\n'.join([' '.join(["{:<2d}x {:<2d}= {:<2d} ".format(j, i, i * j) for j in range(1, i + 1)])
                 for i in range(1, 10)]))

8. 一行代码输出阵列迷宫

大家小时候玩过迷宫吗?迷宫是一种非常益智的游戏。可以激发玩家的大脑潜力,还能够对孩子们有一定的启迪作用。请用一行代码输出阵列迷宫,程序运行效果如下图所示。
在这里插入图片描述
示例代码如下:

print(''.join(__import__('random').choice('\u2572\u2571\u2570\u2569') for i in range(50 * 30)))

9. 一行代码情人节画爱心表白

说到程序员,大家想到的都是直男或者直女,然而程序员也有着自己的浪漫,本案例使用一行代码画出爱心,如图所示:
在这里插入图片描述
示例代码如下:

print('\n'.join([''.join([('AmoLove'[(x-y) % len('AmoLove')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(15, -15, -1)]))

10. 一行代码对字典排序并输出新字典

原字典:

d = {'a': 12, 'b': 50, 'c': 1, 'd': 20}

新字典:

new_d = {'c': 1, 'a': 12, 'd': 20, 'b': 50}

示例代码如下:

print(dict(sorted({'a': 12, 'b': 50, "c": 1, "d": 20}.items(), key=lambda item: item[1])))

11. 一行代码求出列表中大于10的元素

filter函数使用lambda函数,找出满足大于10的元素。给定列表:

a = [15, 2, 7, 20, 400, 10, 9, -15, 107]

示例代码如下:

print(list(filter(lambda x: x > 10, [15, 2, 7, 20, 400, 10, 9, -15, 107])))

执行结果如图所示:
在这里插入图片描述

12. 一行代码把一个元素全为数字的列表中的所有偶数加1

给定列表:

num_list2 = [100, 101, 102, 103, 104, 105, 106, 107]

示例代码如下:

print(list(map(lambda x: x + 1 if x % 2 == 0 else x, [100, 101, 102, 103, 104, 105, 106, 107])))

执行结果如图所示:
在这里插入图片描述

13. 一行代码构造18个不同城市的url

url = "http://{}.58.com/zpjianshen/pn{}"
citys = ['北京', '金华', '上海', '深圳', '广州', '厦门', '武汉', '长沙', '石家庄', '南昌', '青岛', '杭州', '合肥', '南宁', '贵阳', '兰州', '郑州', '哈尔滨']
cityscode = ['bj', 'jh', 'sh', 'sz', 'gz', 'xm', 'wh', 'cs', 'sjz', 'nc', 'qd', 'hz', 'hf', 'nn', 'gy', 'lz', 'zz',
             'hrb']
# 要求将上面的url补充完整 格式如下
[{'北京':['http://bj.58.com/zpjianshen/pn1',...'http://bj.58.com/zpjianshen/pn30']}, {'金华':['http://jh.58.com/zpjianshen/pn1',...,'http://bj.58.com/zpjianshen/pn30']}]

运行结果如图所示:
在这里插入图片描述
示例代码如下:

print([{['北京', '金华', '上海', '深圳', '广州', '厦门', '武汉', '长沙', '石家庄', '南昌', '青岛', '杭州', '合肥', '南宁', '贵阳',
         '兰州', '郑州', '哈尔滨'][i]: ["http://{}.58.com/zpjianshen/pn{}".format(
    ['bj', 'jh', 'sh', 'sz', 'gz', 'xm', 'wh', 'cs', 'sjz', 'nc', 'qd', 'hz', 'hf', 'nn', 'gy', 'lz', 'zz',
     'hrb'][i], j + 1) for j in range(30)]} for i in
    range(len(['北京', '金华', '上海', '深圳', '广州', '厦门', '武汉', '长沙', '石家庄', '南昌', '青岛', '杭州', '合肥', '南宁', '贵阳',
               '兰州', '郑州', '哈尔滨']))])

14. 一行代码输出矩形

示例代码如下:

print("\n".join(["*" * 6 for i in range(int(input("行数:").strip()))]))

执行结果如图所示:
在这里插入图片描述
笔者暂时就写这么多,其实很多的代码都是可以用一行代码进行改写的。但是要注意,这种虽然看起来比较炫酷,但是在实际的开发中,千万别这么写,可读性以及维护性太差。如果你发现更多好玩的python代码,欢迎在留言区与大家分享出来。编写不易,请大家手留余香 给个赞或者是关注~,感谢🙏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章