最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python編寫(xiě)一個(gè)根據(jù)姓名測(cè)性別的小程序

 更新時(shí)間:2022年03月15日 08:53:25   作者:顧木子吖  
這篇文章主要為大家介紹了如何利用Python編寫(xiě)一款根據(jù)中文名能猜測(cè)性別的一款界面化的小程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

導(dǎo)語(yǔ)

以前上英語(yǔ)課老師都會(huì)教哪些名字一聽(tīng)就知道是男生的,比如David、Tom、Jerry,然后Angela、Sophia一聽(tīng)就是女生的名字。當(dāng)你以為所有名字一聽(tīng)就可以辨別男女的時(shí)候,你就想錯(cuò)了~就像中文里面“賈凡”,你以為是男生,其實(shí)是女生也說(shuō)不定。這種難分性別的名字

其實(shí)很多呢~為了避免寶寶的性別和提前取好的名字沖突,很多準(zhǔn)媽媽會(huì)給自己的孩子取一個(gè)中性的名字,不管男女都可以用哈哈哈~兩全其美

?每個(gè)女孩子都希望自己的姓名能取的好聽(tīng)一點(diǎn)兒,也不希望經(jīng)常跟男孩子名字撞名吧~想想一個(gè)班里面一個(gè)男生一個(gè)女生名字撞了多尷尬,如果名字偏女孩子一點(diǎn)兒,男生叫這個(gè)名字那可能就尷尬癌都犯了,相反也是!

當(dāng)然,送大家一句經(jīng)典臺(tái)詞搶救一下:“你不尷尬——尷尬的就是別人!“

哈哈哈!那下面就說(shuō)到正題了哈:今天小編教大家編寫(xiě)一款根據(jù)中文名能猜測(cè)性別的一款界面化的小程序呢~

一、準(zhǔn)備環(huán)節(jié)

本文是基于Pyqt5的界面化小程序啦~

1.1 安裝環(huán)境

Python3、Pycharm、pyqt5以及一些自帶滴。

模塊安裝: pip install -i https://pypi.douban.com/simple/ +模塊名

二、準(zhǔn)備素材

素材的話(huà)就是界面化小程序的頭像標(biāo)志以及之前自己爬取準(zhǔn)備的一份百家姓的數(shù)據(jù)csv數(shù)據(jù)。

三、開(kāi)始敲代碼

3.1 導(dǎo)入模塊

import os
import csv
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

3.2 定義界面

self.setWindowTitle('諸子百家——姓名猜性別小程序')
        self.setWindowIcon(QIcon('data/3.png'))
        self.setFixedSize(400, 200)
        self.name_label = QLabel('中文姓名:')
        self.male_label = QLabel('男生概率:')
        self.female_label = QLabel('女生概率:')
        self.button = QPushButton('預(yù)測(cè)')
        self.name_edit = QLineEdit()
        self.male_edit = QLineEdit()
        self.female_edit = QLineEdit()
        self.grid = QGridLayout()
        self.grid.setSpacing(12)
        self.grid.addWidget(self.name_label, 0, 0)
        self.grid.addWidget(self.male_label, 1, 0)
        self.grid.addWidget(self.female_label, 2, 0)
        self.grid.addWidget(self.name_edit, 0, 1)
        self.grid.addWidget(self.male_edit, 1, 1)
        self.grid.addWidget(self.female_edit, 2, 1)
        self.grid.addWidget(self.button, 0, 2)
        self.setLayout(self.grid)
        self.button.clicked.connect(lambda: self.predict(self.name_edit.text()))

3.3 預(yù)測(cè)性別

?def predict(self, name):
        def genderprob(name, probs, type_='male'):
            assert type_ in ['male', 'female']
            if type_ == 'male':
                p = self.male_total / self.total
                for c in name:
                    p *= probs.get(c, (0, 0))[0]
            else:
                p = self.female_total / self.total
                for c in name:
                    p *= probs.get(c, (0, 0))[1]
            return p
        for c in name:
            assert u'\u4e00' <= c <= u'\u9fa0'
        male_prob = genderprob(name, self.name_probs, 'male')
        female_prob = genderprob(name, self.name_probs, 'female')
        result = {'male': male_prob / (male_prob + female_prob), 'female': female_prob / (male_prob + female_prob)}
        self.male_edit.setText(str(result['male']))
        self.female_edit.setText(str(result['female']))
        return result

3.4 讀取數(shù)據(jù) 

    def readCSV(self, csvpath='freqs.csv'):
        fp = open(csvpath, 'r', encoding='utf-8')
        csv_reader = csv.reader(fp)
        name_freqs = {}
        for idx, row in enumerate(csv_reader):
            if idx == 0: continue
            name_freqs[row[0]] = (row[1], row[2])
        return name_freqs

3.5 附完整的源碼

'''
程序名稱(chēng):
    根據(jù)中文名字推斷性別
    源碼基地:#806965976#
    csdn賬號(hào):顧木子吖
'''
import os
import csv
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
 
 
'''根據(jù)中文名字判斷性別'''
class GenderPredictor(QWidget):
    def __init__(self, parent=None, **kwargs):
        super(GenderPredictor, self).__init__(parent)
        # 定義界面
        self.setWindowTitle('諸子百家——姓名猜性別小程序')
        self.setWindowIcon(QIcon('data/3.png'))
        self.setFixedSize(500, 500)
        self.name_label = QLabel('中文姓名:')
        self.male_label = QLabel('男生概率:')
        self.female_label = QLabel('女生概率:')
        self.button = QPushButton('預(yù)測(cè)')
        self.name_edit = QLineEdit()
        self.male_edit = QLineEdit()
        self.female_edit = QLineEdit()
        self.grid = QGridLayout()
        self.grid.setSpacing(12)
        self.grid.addWidget(self.name_label, 0, 0)
        self.grid.addWidget(self.male_label, 1, 0)
        self.grid.addWidget(self.female_label, 2, 0)
        self.grid.addWidget(self.name_edit, 0, 1)
        self.grid.addWidget(self.male_edit, 1, 1)
        self.grid.addWidget(self.female_edit, 2, 1)
        self.grid.addWidget(self.button, 0, 2)
        self.setLayout(self.grid)
        self.button.clicked.connect(lambda: self.predict(self.name_edit.text()))
        # 模型初始化
        self.name_freqs = self.readCSV(os.path.join(os.getcwd(), 'data/freqs.csv'))
        self.male_total = 0
        self.female_total = 0
        for key, value in self.name_freqs.items():
            self.male_total += int(value[0])
            self.female_total += int(value[1])
        self.total = self.male_total + self.female_total
        self.name_probs = {}
        for key, value in self.name_freqs.items():
            self.name_probs[key] = (int(value[0])/self.male_total, int(value[1])/self.female_total)
    '''預(yù)測(cè)性別'''
    def predict(self, name):
        def genderprob(name, probs, type_='male'):
            assert type_ in ['male', 'female']
            if type_ == 'male':
                p = self.male_total / self.total
                for c in name:
                    p *= probs.get(c, (0, 0))[0]
            else:
                p = self.female_total / self.total
                for c in name:
                    p *= probs.get(c, (0, 0))[1]
            return p
        for c in name:
            assert u'\u4e00' <= c <= u'\u9fa0'
        male_prob = genderprob(name, self.name_probs, 'male')
        female_prob = genderprob(name, self.name_probs, 'female')
        result = {'male': male_prob / (male_prob + female_prob), 'female': female_prob / (male_prob + female_prob)}
        self.male_edit.setText(str(result['male']))
        self.female_edit.setText(str(result['female']))
        return result
    '''讀取數(shù)據(jù)集'''
    def readCSV(self, csvpath='freqs.csv'):
        fp = open(csvpath, 'r', encoding='utf-8')
        csv_reader = csv.reader(fp)
        name_freqs = {}
        for idx, row in enumerate(csv_reader):
            if idx == 0: continue
            name_freqs[row[0]] = (row[1], row[2])
        return name_freqs
 
 
'''run'''
if __name__ == '__main__':
    app = QApplication(sys.argv)
    client = GenderPredictor()
    client.show()
    sys.exit(app.exec_())

四、效果展示

4.1  姓名:顧雪 效果Part 1

是不是聽(tīng)這個(gè)名字就知道是女生吖~測(cè)一測(cè)之后果然女生取這個(gè)名字的概率高出一截兒哈!

4.2 姓名:李志 效果Part 2

總結(jié)

好啦!一款簡(jiǎn)單的猜猜猜小程序就出爐了,偷偷拿自己的名字試試看吧~哈哈哈 不告訴別人.jpg

以上就是基于Python編寫(xiě)一個(gè)根據(jù)姓名測(cè)性別的小程序的詳細(xì)內(nèi)容,更多關(guān)于Python姓名測(cè)性別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python+樹(shù)莓派+YOLO打造一款人工智能照相機(jī)

    Python+樹(shù)莓派+YOLO打造一款人工智能照相機(jī)

    今天,我們將自己動(dòng)手打造出一款基于深度學(xué)習(xí)的照相機(jī),當(dāng)小鳥(niǎo)出現(xiàn)在攝像頭畫(huà)面中時(shí),它將能檢測(cè)到小鳥(niǎo)并自動(dòng)進(jìn)行拍照
    2018-01-01
  • Python腳本激活Linux密碼的方法(crypt模塊)

    Python腳本激活Linux密碼的方法(crypt模塊)

    今天小編給大家分享一個(gè)非常不錯(cuò)的方法破解linux口令,主要是利用linux系統(tǒng)中的crypt模塊模擬了linux系統(tǒng)中用戶(hù)密碼的加密,操作也很方便,對(duì)python破解linux口令相關(guān)知識(shí)感興趣的朋友跟隨小編一起學(xué)習(xí)下吧
    2021-05-05
  • OpenCV實(shí)現(xiàn)透視變換的示例代碼

    OpenCV實(shí)現(xiàn)透視變換的示例代碼

    本文主要介紹了OpenCV實(shí)現(xiàn)透視變換的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python批量處理文件或文件夾

    python批量處理文件或文件夾

    這篇文章主要為大家詳細(xì)介紹了python批量處理文件或文件夾,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python編寫(xiě)生成驗(yàn)證碼的腳本的教程

    Python編寫(xiě)生成驗(yàn)證碼的腳本的教程

    這篇文章主要介紹了Python編寫(xiě)生成驗(yàn)證碼的腳本的教程,驗(yàn)證碼在web編程中幾乎是必備的功能,需要的朋友可以參考下
    2015-05-05
  • 對(duì)Python中Iterator和Iterable的區(qū)別詳解

    對(duì)Python中Iterator和Iterable的區(qū)別詳解

    今天小編就為大家分享一篇對(duì)Python中Iterator和Iterable的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python實(shí)現(xiàn)視頻轉(zhuǎn)換為字符畫(huà)詳解

    Python實(shí)現(xiàn)視頻轉(zhuǎn)換為字符畫(huà)詳解

    這篇文章主要介紹了如何通過(guò)Python實(shí)現(xiàn)讀取視頻并將其轉(zhuǎn)換為字符畫(huà)的示例代碼,文中講解詳細(xì),對(duì)我們的學(xué)習(xí)和工作有一點(diǎn)的價(jià)值,感興趣的小伙伴可以了解一下
    2021-12-12
  • Python中l(wèi)ambda表達(dá)式的使用詳解(完整通透版)

    Python中l(wèi)ambda表達(dá)式的使用詳解(完整通透版)

    這篇文章主要介紹了Python中l(wèi)ambda表達(dá)式使用的相關(guān)資料,包括其基本語(yǔ)法、常見(jiàn)應(yīng)用場(chǎng)景(如排序、map、filter、reduce函數(shù)結(jié)合使用)以及如何在函數(shù)內(nèi)部或一次性使用,通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • Django 開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解

    Django 開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解

    這篇文章主要介紹了Django 開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python中實(shí)現(xiàn)定時(shí)任務(wù)的幾種方案

    python中實(shí)現(xiàn)定時(shí)任務(wù)的幾種方案

    本文呢給大家總結(jié)以下幾種方案實(shí)現(xiàn)定時(shí)任務(wù),可根據(jù)不同需求去使用不同方案,文章通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以參考下
    2023-10-10

最新評(píng)論

黄骅市| 宽甸| 大安市| 棋牌| 霸州市| 宝清县| 万盛区| 南涧| 定南县| 五峰| 清远市| 林口县| 澜沧| 延川县| 普安县| 永州市| 二连浩特市| 阳山县| 河北区| 铜鼓县| 淳安县| 宝兴县| 札达县| 龙泉市| 北海市| 子长县| 收藏| 铜陵市| 东乡县| 大渡口区| 石嘴山市| 定州市| 浦江县| 南康市| 通山县| 大埔县| 南漳县| 盘锦市| 高雄市| 贵定县| 香格里拉县|