【问题标题】:Getting can't convert int to str error in my code can't figure out why在我的代码中获取 can't convert int to str 错误无法弄清楚原因
【发布时间】:2016-05-04 22:08:52
【问题描述】:

我的代码应该采用一个密码并将其更改为“易于记忆”的元音和辅音排列

def alphapinEncode(pin):
    vowels = "aeiou "
    consonants = "bcdfghjklmnpqrstvwyz "
    alphaPin = " "
    while pin > 0:
        newPin = pin // 100
        pinRemain = pin % 100
        vowelToFind = pinRemain % 5
        pinVowel = vowels.find(vowelToFind)
        pinConsonant = consonants.find(pinRemain // 5)
        pin = newPin
        alphaPin = alphaPin + pinVowel + pinConsonant

    return alphaPin

感谢任何帮助,谢谢!

【问题讨论】:

  • 我也知道我还没有添加 consonantToFind 部分,但它不会超过元音部分,因为它无法将 int 转换为 str 所以我觉得没有必要添加它,直到我得到它工作
  • 当你 % 100 if 会给你最后 2 位数字,这将在 00-99 之间,如果你 % 到 5,你会得到 0-5 之间的东西,这是元音的数量,如果你 // 到 5 你会得到 0-19 之间的东西,这是辅音的数量
  • 您应该作为字符串遍历 PIN,而不是对其进行数学运算。通过将其视为一个数字,如果我的 PIN 是 0024,那么当我需要输入所有四位数字才能工作时,你只会给我 24 部分的“易于记忆”的代码。
  • 这个想法是,在你找到最后 2 位数字的“易于记忆的部分”之后,变成 newPin 的 //100 部分是引脚的其余部分,因此当函数返回时它将运行再次为您的其余引脚等等,直到他们没有留下数字
  • 请将说明编辑到原始问题中;这使得问答对未来的 SO 用户更有用。

标签: python string while-loop int find


【解决方案1】:

我相信您的问题在于以下两行:

vowelToFind = pinRemain % 5
pinVowel = vowels.find(vowelToFind)

在这种情况下,vowelToFind 是一个整数,vowels 是一个字符串。 strfind 方法接受一个 string 参数,并返回它在字符串中的位置 - 你传递的是一个 integer 。您甚至不想在vowels 中查找子字符串,您只是想在索引vowelToFind 处检索字符。我认为您应该改为执行以下操作:

vowelToFind = pinRemain % 5
pinVowel = vowels[vowelToFind]

注意

我正在解决您询问的特定“int to str”错误。我不确定您用来生成“易于记忆”的字符序列的其余逻辑。

【讨论】:

  • 这成功了!非常感谢。在我们做的例子中,我们只使用字符串,所以当我们在项目中切换到整数时,它让我有点失望
  • 我的荣幸,brochacho! :D
  • 其余的逻辑也是基于我正在做的项目中给我的指导方针,而不是我自己的逻辑
猜你喜欢
  • 1970-01-01
  • 2015-03-16
  • 2018-04-29
  • 2022-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
相关资源
最近更新 更多