社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Katana(python):编码问题还是bug?

Ellis Hogan • 5 年前 • 1576 次点击  

好的,这是密码。我不打算在日志中键入错误。不需要复制代码。它的基本意思是存在一个问题,即“l”不是int类型。

def i_am_here(path):
  print(path)
  lst = []
  num = []
  x = 0
  y = 0
  for i in path:
    try: 
        int(i)
        num.append(int(i))
    except ValueError:
        if i == 'r' or i == 'R':
            new = ''.join(num)
            lst.append(new)
            lst.append('r')
            num = []
        if i == 'L' or i == 'l':
            new = ''.join(num)
            lst.append(new)
            lst.append('l')
            num = []
  new = ''.join(num)
  lst.append(new)
  lst = lst[1:len(lst)]
  print(lst)
  for i in range(len(lst)):

    if lst[i] == 'r':
        print(lst[i+1])

enter image description here

好的,所以我99%确定这只是一个错误,当我使用:

for i in path:
    try: 
        int(i)
        num.append(int(i))
    except ValueError:
        if i == 'r' or i == 'R':

            lst.append(num)
            lst.append('r')
            num = []
        if i == 'L' or i == 'l':

            lst.append(num)
            lst.append('l')
            num = []

一切正常。有什么想法吗?我本来打算提交一张发行票,但在提交之前我想我可能会问。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43155
 
1576 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Ssein
Reply   •   1 楼
Ssein    6 年前

您的代码出现故障,因为它试图转换包含非数字字符的字符串,例如:

在:

text = 'L'
print int(text)

出:

valueerror:以10为基数的int()的文本无效:“l”

但是如果:

在:

text = '2'
print int(text)

出:

然而,我认为你的大部分代码都是无用的。我只是想把那些部件拆掉。这里是:

编辑:

def i_am_here(path):
    num = []
    for i in path:
        if isinstance(i, str): #check if 'i' is a sting type
          if i.isdigit():
             num.append(int(i))
          else:  
             num.append(i.lower())
        else:
           num.append(i)
    return(num)

例如:

path= [5, 'r', 'L', 0.00032,'l','55','%','R', [], '{}'] #This is an example
num_List = i_am_here(path)
for i in num_List :
        if i != 'r':
            print(i) 

你真的在尝试将超级大小写字符串转换成小写。

Mikhail Kanin
Reply   •   2 楼
Mikhail Kanin    6 年前

它与您试图发送到函数i_am_的参数路径相连接。如果您尝试用一个字符发送字符串,那么就没有问题。整数值出现问题。

如果尝试使用以下方法调用函数:

i_am_here(1)

你有问题了

for i in path:

因为在for循环中不能使用简单的整数值,只能使用iterable对象,如列表或字符串。

不应使用单个整数值,而应使用列表:

param_lst = [1]

i_am_here(param_lst)

你也应该在这里修改你的代码:

new = ''.join(num)

你应该重写为:

new = ''.join(str(n) for n in num)