好玩的Python吃雞也要效率高:隨機起名改進

之前寫里一篇文章,好玩兒的Python:想要吃雞?你得有個好名字!但是代碼不是最優化的,我們來改進下。

隨機起名之前的實現

character_lib = "富強民主文明和諧自由平等公正法治愛國敬業誠信友善"

from random import randint


username = ''
names = []

for x in range(3):
    username += character_lib[randint(0, len(character_lib))]

print("你的名字是:" + username)

這個代碼有沒有毛病,沒有毛病,很常規的思路,重復三次從待選字列表里隨機選擇就是了,然后代碼不夠優雅。

我們知道對一門語言來說,其官方的文檔教程就是很好的說明書,閑著沒事翻一下綜是會有收獲的,所以我翻到里下面這個函數打使用:

# choice() 方法返回一個列表,元組或字符串的隨機項。
# 參數:seq -- 可以是一個列表,元組或字符串。 
# 返回值:返回隨機項。 
# 語法:
import random

random.choice( seq  )

接下來我們看代碼

import random

character_lib = "富強民主文明和諧自由平等公正法治愛國敬業誠信友善"

username = ''

for x in range(3):
    username += random.choice(character_lib)

print('您的用戶名是[{}]趕快開始吃雞吧'.format(username))

看用了random.choice()方法代碼的可讀性是不是大大提升了,更加pythonic了。
封裝一下

import random

character_lib = "富強民主文明和諧自由平等公正法治愛國敬業誠信友善"

def create_name():
    username = ''

    for x in range(3):
        username += random.choice(character_lib)

    return username

print('您的用戶名是[{}]趕快開始吃雞吧'.format(create_name()))

看一下運行結果

xpro@xpro-ThinkPad-L440:~$ vim randomname.py
xpro@xpro-ThinkPad-L440:~$ python3 randomname.py 
您的用戶名是[業和民]趕快開始吃雞吧
您的用戶名是[敬正友]趕快開始吃雞吧
您的用戶名是[善法信]趕快開始吃雞吧
您的用戶名是[治主國]趕快開始吃雞吧
您的用戶名是[友和等]趕快開始吃雞吧
您的用戶名是[法治敬]趕快開始吃雞吧
您的用戶名是[愛由信]趕快開始吃雞吧
您的用戶名是[愛敬善]趕快開始吃雞吧
您的用戶名是[等善誠]趕快開始吃雞吧
您的用戶名是[由主法]趕快開始吃雞吧
您的用戶名是[民治善]趕快開始吃雞吧
xpro@xpro-ThinkPad-L440:~$ 

但是cre_name函數里面用到循環效率比較低,我們用map函數來優化

import random
from functools import reduce

character_lib = "富強民主文明和諧自由平等公正法治愛國敬業誠信友善"


def cre_name():
    username = ['', '', '']
    name = map(lambda x : x + random.choice(character_lib), username)
    username = ''.join(list(name))
    return username

print(cre_name())

for x in range(10):
    print(cre_name())

運行結果

xpro@xpro-ThinkPad-L440:~$ vim randomname2.py 
xpro@xpro-ThinkPad-L440:~$ python3 randomname2.py 
主治強
誠敬國
強友國
強治民
富民文
強治由
公強諧
友業等
民主誠
強平友
公和正

至于為啥這么優化,請百度,或者參考哦廖雪峰打python3教程
《流暢的python》

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容