【问题标题】:Anagram string in pythonpython中的字谜字符串
【发布时间】:2020-10-28 22:10:39
【问题描述】:

我用来查找字谜的逻辑如下

首先我将第一个字符串的字符存储在空数组中

然后我一一检查 string2 的字符是否已经存在于我创建的 arr 中

如果是则删除如果否则追加

最后,如果整个数组为空,则是字符串是字谜,否则不是

  t=int(input())
  for i in range(t):
      n1=input()
      n2=input()
      arr=[]


  for ch in n1:
      arr.append(ch)
  for ch in n2:
      if ch in arr:

          arr.pop(ch)
      else:

          arr.append(ch)
  if arr==[]:
      print("yes")
  else:
      print("no")

使用此代码会出现错误

TypeError: 'str' 对象不能被解释为整数 我该如何纠正这个错误

【问题讨论】:

  • 检查 list.pop 期望的参数,并将其与您的代码提供的参数进行比较,然后考虑改用 list.remove
  • 哪行代码出错了?并请包括实际代码。例如,这段代码似乎混淆了n1s1
  • 您在此问题关闭之前已发布此问题,现在您已使用另一个帐户再次发布此问题
  • 您是在尝试解决您的问题还是希望得到更好的答案,这可能会有所帮助stackoverflow.com/a/14990938/9050514

标签: python string


【解决方案1】:

您收到此错误是因为list.pop 等待integer 类型,但它得到string。你应该使用list.remove,它可以处理string类型(它只删除第一次出现的元素,所以重复的字符不会引起混乱)。我写了一个小例子。

代码:

n1 = input("First word: ")
n2 = input("Second word: ")
arr = []

for ch in n1:
    arr.append(ch)
for ch in n2:
    if ch in arr:
        arr.remove(ch)
    else:
        arr.append(ch)
if not arr:  # True if the list is empty.
    print("Anagram")
else:
    print("NOT Anagram")

输出:

>>> python3 test.py
First word: hello
Second word: lelab
NOT Anagram

>>> python3 test.py
First word: hello
Second word: oelhl
Anagram

【讨论】:

    猜你喜欢
    • 2016-06-24
    • 2016-06-23
    • 2014-04-13
    • 2021-12-12
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    相关资源
    最近更新 更多