【问题标题】:Using sets in python to find common letters from two strings [closed]在python中使用集合从两个字符串中查找常见字母[关闭]
【发布时间】:2015-10-27 19:45:22
【问题描述】:

我正在尝试编写一个程序,该程序基本上接受两个字符串并从它们中找到共同的字母并从中找到不常见的字母。它还必须在字符串中找到您可以找到的数字和特殊字符,并在打印命令中显示它们。

这是我的代码

from string import ascii_letters
import re
import itertools

def main():
    s1 = input("Please enter string 1: ")
    s2 = input("Please enter string 2: ")
    ch=""
    lowercase_letters = [i for i in s1 if i.islower() and i in s2]
    #print(lowercase_letters)
    uppercase_letters = [i for i in s1 if i.isupper() and i in s2]
    # print(uppercase_letters)
    new_str=''.join(uppercase_letters+lowercase_letters)
    print("The set consisting of the upper and lowercase letters that are contained in both strings is: ", new_str)

    # stringFunction(s1, s2)
    # k= str(longest_common_substring(s1,s2))
    # print(k)

def stringFunction(s1, s2):
    l1=list(''.join(s1.split()))
    l2=list(''.join(s2.split()))
    return [x for x in l1 if x in l2]

    print (stringFunction)

def longest_common_substring(s1, s2):
   set1 = set(s1[begin:end] for (begin, end) in
              itertools.combinations(range(len(s1)+1), 2))
   set2 = set(s2[begin:end] for (begin, end) in
              itertools.combinations(range(len(s2)+1), 2))
   common = set1.intersection(set2)
   return str(common)

main()

输出应该是这样的

【问题讨论】:

  • 您的实际问题是什么?
  • 我想使用两个字符串并找出:由包含在两个字符串中的大写和小写字母组成的集合。湾。由不包含在任一字符串中的大写和小写字母组成的集合。 C。由两个字符串中包含的所有非字母字符组成的集合。
  • 很好。您当前的代码有什么问题?
  • b 部分和 c 部分根本不起作用
  • 好吧,看起来您甚至没有尝试解决它们,因为您当前的代码不包含任何看起来它甚至 尝试 来解决这些问题的东西。请edit 您的帖子显示您尝试过的内容,包括示例输入、预期输出、实际输出以及任何回溯或错误的全文。 Stack Overflow 既不是论坛,也不是教程或代码编写服务。我建议您也使用tour 并仔细阅读help center 以了解有关该网站的更多信息。

标签: python string python-3.x set


【解决方案1】:

给你:

@EDIT1:忘了在 python3.x 中 print 是一个函数。

@EDIT2:这不是原始请求的一部分。

@EDIT3:按照后来的要求格式化输出(我不是打印格式化方面的专家)。

@EDIT4:修改输出以匹配修改后的请求

import string

def func(str1, str2):
    s1 = set(str1)
    s2 = set(str2)
    # requests are ambiguous "contained in both strings" can be either interpreted as intersections or union (i chose intersection)
    uni = s1.union(s2)
    letters_in_both_strings = [item for item in s1.intersection(s2) if item.isalpha()]
    non_letters_in_any_string = [item for item in uni if not item.isalpha()]
    all_letters = set(string.ascii_uppercase + string.ascii_lowercase)
    return letters_in_both_strings, all_letters.difference(uni), non_letters_in_any_string

str1 = input("Enter 1st string:")
str2 = input("Enter 2nd string:")
a, b, c = func(str1, str2)
print("|" + "".join(a) + "|\n|" + "".join(b) + "|\n|" + "".join(c) + "|\n")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2014-11-16
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多