第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何優(yōu)化Python中列表搜索中沖突的多個(gè)條件?

如何優(yōu)化Python中列表搜索中沖突的多個(gè)條件?

HUH函數(shù) 2023-09-05 15:54:25
我正在用 python 制作一個(gè)電話簿搜索程序,該程序在文本文件中搜索學(xué)校名稱輸入。在該程序中,系統(tǒng)會(huì)要求用戶提供姓氏或名字和姓氏。然后,程序?qū)⑺阉魑谋疚募⒋蛴∨c輸入的電話號(hào)碼相匹配的姓名。因此,如果用戶輸入 Adams,結(jié)果將是:John Adams,508-555-5555Quicy Adams,508-555-5556如果用戶輸入 John Adams,則只會(huì)打印他的名字。John Adams,508-555-5555我的問(wèn)題是,我的 for 循環(huán)條件逐行讀取列表。無(wú)論是否使用全名,它將打印與姓氏匹配的所有名稱。這是我的代碼:while True:    original_name = input("Enter a last name, or first and last name: ")  # prompt user for name    if original_name == "":   # create condition for infinite loop to end        break    l_name = original_name.lower()  # lower case to assist in finding a match    s_name = l_name.split()         # split to allow a full name to become two variables    if len(s_name) == 1:        # Set condition for last name if it is by itself to be properly placed in variable        last_name = s_name[0]    elif len(s_name) == 2:      # Set condition for first name and last name to go into proper variables        first_name = s_name[0]        last_name = s_name[1]    else:        print("Error: Input needs to be no more than 2 names!")  # error for when more than 2 names are given    f = open("phones.txt", 'r')     # open text file being used    numbers = f.readlines()         # read text file line by line    for line in numbers:        line = line.lower()     # lower case to assist in finding a match        line = line.strip()     # strip to get rid of new lines        line = line.split()     # split to allow for both first and last name to match我知道我的問(wèn)題在于條件。如果我先使用 elif 條件,即使使用全名,它也會(huì)打印具有相同姓氏的名稱。我查看了 stackflow 上的幾個(gè)問(wèn)題,看看我是否能弄清楚,但沒(méi)有一個(gè)完全符合我的問(wèn)題。另外,我想知道如何讓逗號(hào)更接近姓氏,因?yàn)槲业妮敵鲎屗谛帐锨懊娓?dòng)一個(gè)空格: John Adams , 508-555-5555。我感謝您提供的所有幫助,并期待您傳授的知識(shí)!
查看完整描述

2 回答

?
冉冉說(shuō)

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊

你想要一些類似的東西:


if (len(s_name) == 2 and first_name == line[0] and last_name == line[1]) or (len(s_name) == 1 and last_name == line[1]):

    print(line[0].capitalize(), line[1].capitalize(), ",", line[2])

如果提供了兩個(gè)名稱并且 2 個(gè)匹配,或者如果提供了 1 個(gè)名稱并且它與姓氏匹配,這將打印該行。值得注意的是,對(duì)于 lsit 行中的每個(gè)元素,您可能想要進(jìn)行剝離,以避免由于空格而導(dǎo)致元素?zé)o法計(jì)算。


查看完整回答
反對(duì) 回復(fù) 2023-09-05
?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

為什么要這么費(fèi)力去了解姓氏和名字呢?嘗試這個(gè):


while True:

    if input("name").lower() in line.lower():

        print(line)

編輯


def search(name):

    with open('phones.txt','r') as file:

        temp=[]

        for i in file :

            if name in i :

                temp.append(i.split())

        for i in temp:

            i[0]=i[0]+' '+i[1]

            i[1]=', '

            print(''.join(i))


查看完整回答
反對(duì) 回復(fù) 2023-09-05
  • 2 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)