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

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