之前寫里一篇文章颜凯,好玩兒的Python:想要吃雞?你得有個好名字!但是代碼不是最優(yōu)化的,我們來改進下熟丸。
隨機起名之前的實現(xiàn)
character_lib = "富強民主文明和諧自由平等公正法治愛國敬業(yè)誠信友善"
from random import randint
username = ''
names = []
for x in range(3):
username += character_lib[randint(0, len(character_lib))]
print("你的名字是:" + username)
這個代碼有沒有毛病训措,沒有毛病,很常規(guī)的思路,重復(fù)三次從待選字列表里隨機選擇就是了绩鸣,然后代碼不夠優(yōu)雅怀大。
我們知道對一門語言來說,其官方的文檔教程就是很好的說明書呀闻,閑著沒事翻一下綜是會有收獲的化借,所以我翻到里下面這個函數(shù)打使用:
# choice() 方法返回一個列表,元組或字符串的隨機項捡多。
# 參數(shù):seq -- 可以是一個列表蓖康,元組或字符串。
# 返回值:返回隨機項垒手。
# 語法:
import random
random.choice( seq )
接下來我們看代碼
import random
character_lib = "富強民主文明和諧自由平等公正法治愛國敬業(yè)誠信友善"
username = ''
for x in range(3):
username += random.choice(character_lib)
print('您的用戶名是[{}]趕快開始吃雞吧'.format(username))
看用了random.choice()方法代碼的可讀性是不是大大提升了蒜焊,更加pythonic了窜觉。
封裝一下
import random
character_lib = "富強民主文明和諧自由平等公正法治愛國敬業(yè)誠信友善"
def create_name():
username = ''
for x in range(3):
username += random.choice(character_lib)
return username
print('您的用戶名是[{}]趕快開始吃雞吧'.format(create_name()))
看一下運行結(jié)果
xpro@xpro-ThinkPad-L440:~$ vim randomname.py
xpro@xpro-ThinkPad-L440:~$ python3 randomname.py
您的用戶名是[業(yè)和民]趕快開始吃雞吧
您的用戶名是[敬正友]趕快開始吃雞吧
您的用戶名是[善法信]趕快開始吃雞吧
您的用戶名是[治主國]趕快開始吃雞吧
您的用戶名是[友和等]趕快開始吃雞吧
您的用戶名是[法治敬]趕快開始吃雞吧
您的用戶名是[愛由信]趕快開始吃雞吧
您的用戶名是[愛敬善]趕快開始吃雞吧
您的用戶名是[等善誠]趕快開始吃雞吧
您的用戶名是[由主法]趕快開始吃雞吧
您的用戶名是[民治善]趕快開始吃雞吧
xpro@xpro-ThinkPad-L440:~$
但是cre_name函數(shù)里面用到循環(huán)效率比較低服协,我們用map函數(shù)來優(yōu)化
import random
from functools import reduce
character_lib = "富強民主文明和諧自由平等公正法治愛國敬業(yè)誠信友善"
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())
運行結(jié)果
xpro@xpro-ThinkPad-L440:~$ vim randomname2.py
xpro@xpro-ThinkPad-L440:~$ python3 randomname2.py
主治強
誠敬國
強友國
強治民
富民文
強治由
公強諧
友業(yè)等
民主誠
強平友
公和正
至于為啥這么優(yōu)化,請百度烈炭,或者參考哦廖雪峰打python3教程
《流暢的python》