赵从文芜湖123 发表于 2021-9-3 14:07:12

python

假设 s = '李晓明城'
输入 李晓明 或者 明城 总之如果输入的是这个s的一部分,就把s打印出来,
我不知道该咋办。


我知道我写的是错误的。
while True:
    simi = input('请输入名字的一部分:')
    for i in ls1:#ls1是姓名组成的列表
      if simi in i:
            print(i)
我就是想找相似的名字

louxinghao 发表于 2021-9-3 14:16:47

本帖最后由 louxinghao 于 2021-9-3 14:18 编辑

可以直接用 in 来判断
s = '李晓明城'

while True:
    simi = input('请输入名字的一部分:')
    if simi in s:
      print(s)
      break

逃兵 发表于 2021-9-3 14:18:11

这个逻辑没啥问题
s = '李晓明城'
ls1 =
while True:
    simi = input('请输入名字的一部分:')
    for i in ls1:#ls1是姓名组成的列表
      if simi in i:
            print(i)

赵从文芜湖123 发表于 2021-9-3 14:21:19

逃兵 发表于 2021-9-3 14:18
这个逻辑没啥问题

s = '李晓明城'
>>> if '李城' in s:
        print(True)
else:
        print(False)

       
False

赵从文芜湖123 发表于 2021-9-3 14:21:52

赵从文芜湖123 发表于 2021-9-3 14:21
s = '李晓明城'
>>> if '李城' in s:
        print(True)


名字的部分可能不会挨着

灰晨 发表于 2021-9-3 14:26:49

s = '李晓明城'

while True:
    simi = input('请输入名字的一部分:')
    for i in simi:
      print(i)
      if i in s:
            print(s)
输入只要有一个字在s里就打印s

灰晨 发表于 2021-9-3 14:31:10

s = '李晓明城'
k = True
simi = input('请输入名字的一部分:')
for i in simi:
    if i not in s:
      k = False
if k:
    print(s)
输入的字符,都是s的一部分就会打印s,出现不是s的部分就不会打印s

赵从文芜湖123 发表于 2021-9-3 14:32:42

灰晨 发表于 2021-9-3 14:26
输入只要有一个字在s里就打印s

可是我感觉我想的是有几个字,在s中,才打印出来。
因为我在核对名单,有些名字,名单中没有,我需要一个一个去找。核对的名单中,比如李红珠(造的),名单中就没有,只有李无珠和李有珠(造的),所以我想的是,输入李红或者李珠或者红珠来搜索。

赵从文芜湖123 发表于 2021-9-3 14:37:58

灰晨 发表于 2021-9-3 14:31
输入的字符,都是s的一部分就会打印s,出现不是s的部分就不会打印s

wow好像 很有道理哎
我去试试

灰晨 发表于 2021-9-3 14:44:09

本帖最后由 灰晨 于 2021-9-3 14:46 编辑

赵从文芜湖123 发表于 2021-9-3 14:32
可是我感觉我想的是有几个字,在s中,才打印出来。
因为我在核对名单,有些名字,名单中没有,我需要一 ...

s = ['李无珠','李有珠','红猪']
x = input('输入名字的一部分')

for i in s:
    for j in x:
      if j in i:
            print(i)
            break

逃兵 发表于 2021-9-3 14:53:55

s = '李晓明城'
ls1 =
while True:
    simi = input('请输入名字的一部分:')
    for i in ls1:#ls1是姓名组成的列表
      if set(simi) <= set(i):
            print(i)

赵从文芜湖123 发表于 2021-9-3 15:21:13

names = ['17','18','19','20']
ls = []
ls1 = []
for name in names:
    fi = open(name + '级学生汇总.csv','r')
    for line in fi:
      line = line.replace('\n','')
      ls.append(line.split(','))#把csv转化成列表
for i in ls:
    ls1.append(i)#所含全部的学生姓名.
while True:
    ls2 = []
    flag = False
    simi = input('请输入名字的一部分:')
    for i in ls1:
      n = 0
      for k in simi:
            if k in i :
                n = n + 1
            if n == len(simi):
                ls2.append(i)
            
    if len(ls2) == 0:
      print('没有找到相似的名字.')
    if len(ls2) != 0:
      print('相似的名字为{}'.format(ls2))

赵从文芜湖123 发表于 2021-9-3 15:21:43

费了老鼻子劲了

赵从文芜湖123 发表于 2021-9-3 15:22:41

赵从文芜湖123 发表于 2021-9-3 15:21
names = ['17','18','19','20']
ls = []
ls1 = []


这是我自己弄得,我感觉比较好的解决了这个问题。

洛阳城 发表于 2021-9-3 15:23:50

可以考虑一下使用正则表达式
import re
re.match(pattern, string)# pattern是匹配的正则表达式,string是要匹配的字符串

赵从文芜湖123 发表于 2021-9-3 15:28:28

洛阳城 发表于 2021-9-3 15:23
可以考虑一下使用正则表达式

没学过,哈哈哈

傻眼貓咪 发表于 2021-9-3 23:31:54

本帖最后由 傻眼貓咪 于 2021-9-3 23:32 编辑

Python 簡單就是美,為何複雜化呢?2行代碼{:10_249:}{:10_249:}
s = '李晓明城'
if all(): print(s)

赵从文芜湖123 发表于 2021-9-8 14:51:52

傻眼貓咪 发表于 2021-9-3 23:31
2行代碼

这是哪方面?因为我是初学的,不大懂。

傻眼貓咪 发表于 2021-9-8 16:07:18

本帖最后由 傻眼貓咪 于 2021-9-8 16:21 编辑

赵从文芜湖123 发表于 2021-9-8 14:51
这是哪方面?因为我是初学的,不大懂。

這是有關判斷符與布林值運用方法(in,all(),bool())
# bool() 返回布林值
print(bool(1 == 3)) # False

# in 如字面上意思,判斷元素是否在數組裡,列表裡或字符串裡等等
arr =
print(3 in arr) # True

# all() 判斷數組裡/列表裡全部元素是否為 真(True),否則返回 假(False)
res =
print(all(res)) # False
页: [1]
查看完整版本: python