Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-查找在string1和string2中找到的字符数_Python - Fatal编程技术网

Python-查找在string1和string2中找到的字符数

Python-查找在string1和string2中找到的字符数,python,Python,我试图在第一个字符串中找到第二个字符串中的字符数。这就是我到目前为止所做的: def main(): text1 = raw_input("Enter word 1: ") text2 = raw_input("Enter word 2: ") print("The number of characters that occur in both", text1, "and", text2, "is", count) def count(text1, text2):

我试图在第一个字符串中找到第二个字符串中的字符数。这就是我到目前为止所做的:

def main():
    text1 = raw_input("Enter word 1: ")
    text2 = raw_input("Enter word 2: ")

    print("The number of characters that occur in both", text1, "and", text2, "is", count)

def count(text1, text2):
    char = 0
    for i in text1:
        for j in text2:
            if i == j:
                char += 1

    return char

main()

我在def count()上遇到问题。我不知道如何计算text1和text2中出现了多少不会重复的字母。感谢您的帮助

这将是使用
集合的绝佳时机,它可以自动消除重复项并允许即时查找

def count(text1, text2):
  numchars = 0
  text1 = set(list(text1))
  text2 = set(list(text2))
  for char in text1:
    if char in text2:
      numchars += 1

  return numchars
通过将字符串转换为列表,然后再转换为集合,可以消除每个字符串中的所有重复字符(不过,只有在函数中,字符串才可以)。然后,您可以检查第一组中的每个字符,看看它是否在第二组中,这是一个固定时间检查

另一个注意事项:如果您不想将大写
A
和小写
A
作为两个不同的字符计算,请使用
text1=set(list(text1.lower())


此外,您没有正确调用该函数。您应该使用
count(text1,text2)
而不仅仅是
count
。虽然如果要打印出来,您需要使用
str(count(text1,text2))
,因为
count()
函数返回一个整数,您不能仅仅将其与字符串连接起来。

这将是使用
集的绝佳时机,它可以自动消除重复项并允许即时查找

def count(text1, text2):
  numchars = 0
  text1 = set(list(text1))
  text2 = set(list(text2))
  for char in text1:
    if char in text2:
      numchars += 1

  return numchars
通过将字符串转换为列表,然后再转换为集合,可以消除每个字符串中的所有重复字符(不过,只有在函数中,字符串才可以)。然后,您可以检查第一组中的每个字符,看看它是否在第二组中,这是一个固定时间检查

另一个注意事项:如果您不想将大写
A
和小写
A
作为两个不同的字符计算,请使用
text1=set(list(text1.lower())

此外,您没有正确调用该函数。您应该使用
count(text1,text2)
而不仅仅是
count
。虽然如果要打印出来,您需要使用
str(count(text1,text2))
,因为
count()函数返回一个整数,您不能将其与字符串连接起来。

使用:

交集()将接受任何iterable作为参数

如果您想要副本:

def count(text1, text2):
    s = set(text2)
    return len([x for x in text1 if  x in s])
In [29]: count("foo","foobar")
Out[29]: 3

In [30]: count("bana","banana")
Out[30]: 4
使用:

交集()将接受任何iterable作为参数

如果您想要副本:

def count(text1, text2):
    s = set(text2)
    return len([x for x in text1 if  x in s])
In [29]: count("foo","foobar")
Out[29]: 3

In [30]: count("bana","banana")
Out[30]: 4

您可以通过交叉字符串(获取两个字符串中的唯一字符)并获取结果的长度来实现这一点。大概是这样的:

def strIntersection(s1, s2):
   out = ""
   for c in s1:
     if c in s2 and not c in out:
       out += c
   return out



>>> strIntersection('asdfasdfasfd' , 'qazwsxedc')
'asd'

可能是你的计数函数


(另外,您需要调用count(text1、text2),而不仅仅是print语句中的conut,否则它将不会调用函数)

您可以通过交叉字符串(获取两个字符串中的唯一字符)并计算结果的长度来完成此操作。大概是这样的:

def strIntersection(s1, s2):
   out = ""
   for c in s1:
     if c in s2 and not c in out:
       out += c
   return out



>>> strIntersection('asdfasdfasfd' , 'qazwsxedc')
'asd'

可能是你的计数函数


(另外,您需要调用count(text1、text2),而不仅仅是在print语句中调用conut,否则它不会调用函数)

主要问题是,您没有调用
count
函数,而是打印
count
函数对象。应该是的

print("The number of....", text2, "is", count(text1, text2))
此外,如果在第二个字符串中找到字母,则需要递增计数器,然后可以跳到第一个字符串中的下一个字符。所以,你可以像这样打破循环

for i in text1:
    for j in text2:
        if i == j:
            char += 1
            break
for i in text1:
    if i in text2:
        char += 1

由于在 TeX2中只考虑了第一次出现的<代码> i <代码>,我们可以检查它是否存在于<代码>文本2< /代码>中,如

for i in text1:
    for j in text2:
        if i == j:
            char += 1
            break
for i in text1:
    if i in text2:
        char += 1

但请记住,它不会考虑原始字符串中的重复。例如,

aaa
a
将导致count
3
主要问题是,您没有调用
count
函数,而是打印
count
函数对象。应该是的

print("The number of....", text2, "is", count(text1, text2))
此外,如果在第二个字符串中找到字母,则需要递增计数器,然后可以跳到第一个字符串中的下一个字符。所以,你可以像这样打破循环

for i in text1:
    for j in text2:
        if i == j:
            char += 1
            break
for i in text1:
    if i in text2:
        char += 1

由于在 TeX2中只考虑了第一次出现的<代码> i <代码>,我们可以检查它是否存在于<代码>文本2< /代码>中,如

for i in text1:
    for j in text2:
        if i == j:
            char += 1
            break
for i in text1:
    if i in text2:
        char += 1

但请记住,它不会考虑原始字符串中的重复。例如,

aaa
a
将导致计数
3

我不确定这是否是您要查找的,但如果您需要将text1和text2中的字母总数相加,并打印结果,这非常容易。请参阅下文:

text1 = raw_input("Enter word 1: ")
text2 = raw_input("Enter word 2: ")

x = len(text1) + len(text2)

print "The number of characters that occur in both text1 and text2 is " + str(x)

我不确定这是否是您正在寻找的,但如果您需要将text1和text2中的字母总数相加,然后打印结果,这非常容易做到。请参阅下文:

text1 = raw_input("Enter word 1: ")
text2 = raw_input("Enter word 2: ")

x = len(text1) + len(text2)

print "The number of characters that occur in both text1 and text2 is " + str(x)

那么你想找到出现在这两种语言中的唯一字符的数量,没有重复?那么你想找到出现在这两种语言中的唯一字符的数量,没有重复?我得到了这个错误:(“出现在这两种语言中的字符的数量”,“安娜”,“和”,“香蕉”,“是”,)@annabananana7哇,我重载了其中一个变量。您还需要使用
count()
而不是
count
。我现在遇到一个类型错误:TypeError:无法连接'str'和'int'objects@annabananana7啊,是的,那会发生的
count()
返回一个
int
,您需要将其转换为字符串。使用
str(count(text1,text2))
调用函数。实际上,有人使用了我的代码并添加了一个
break
,这使它工作起来很简单,我无法理解。谢谢你的帮助!我得到了这个错误:('anna','and','banana','is',中出现的字符数)@annabananana7哎呀,我重载了其中一个变量。您还需要使用
count()
而不是
count
。我不是