目錄
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代碼,歡迎在留言區與大家分享出來。編寫不易,請大家手留餘香 給個贊或者是關注~,感謝🙏。