首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在列表python中写入奇数

在列表python中写入奇数
EN

Stack Overflow用户
提问于 2014-10-26 21:56:58
回答 2查看 418关注 0票数 1

这是我家庭作业的一部分,我已经接近最终答案了,但还不是很清楚。我需要编写一个函数,将奇数写在列表中位置1和5之间。我做了这样的事情:-in一个文件域,我写下奇数的条件:

代码语言:javascript
复制
def oddNumber(x):
    """
    this instruction help us to write the odd numbers from the positions specificated
    input: x-number
    output:-True if the number is odd 
           -False otherwise
    """
    if x % 2==1:
        return True
    else:
        return False

-then测试:

代码语言:javascript
复制
def testOdd_Number():
    testOdd_Number=[0,1,2,3,4,5,6,7,8]
    oddNumber(testOdd_Number,0,6)
    assert (testOdd_Number==[1,3,5])
    oddNumber(testOdd_Number,0,3)
    assert (testOdd_Number==[3])

在另一个名为-and的文件中,我写道:

代码语言:javascript
复制
 elif(cmd.startswith("odd from ", "")):
            try:
                cmd=cmd.replace("odd from ", "")
                cmd=cmd.replace("to ", "")
                i=int(cmd[:cmd.find(" ")])
                j=int(cmd[cmd.find(" "):])
                if (i>=len(NumberList) or i>j or j>=len(NumberList) or i<0 or j<0):
                    print("Invalid value(s).")
                else:
                    for m in range(i-1,j):
                        if oddNumber(NumberList[m]):
                            print (NumberList[m])
            except: 
                    print("Error!") 

我运行整个项目(我有更多的要求,但其他的都很好),并写-when从位置到位置它说我

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\Adina\My Documents\LiClipse Workspace\P1\userinterface.py", line 94, in <module>
    run()            
  File "C:\Users\Adina\My Documents\LiClipse Workspace\P1\userinterface.py", line 77, in run
    elif(cmd.startswith("odd from ", "")):
TypeError: slice indices must be integers or None or have an __index__ method

我忘了说我还有一个函数main(),在那里我打印requirements.Where,我错了吗?

EN

回答 2

Stack Overflow用户

发布于 2014-10-26 22:07:15

Python的字符串startswith方法,描述如下:

https://docs.python.org/2/library/stdtypes.html

说明参数是

代码语言:javascript
复制
some_string.startswith(prefix, beginning, end) #where beginning and end are optional integers

并且您提供了前缀和空字符串( cmd.startswith("odd from ","") )

票数 3
EN

Stack Overflow用户

发布于 2014-10-26 23:44:49

我注意到了一些事情:

1)您可以将oddNumber函数缩短为

代码语言:javascript
复制
def oddNumber(x):
    return x%2

2)在测试中,将名为testOdd_Number的函数重新绑定到某个列表,然后将其传递给oddNumber函数。这是与上面描述的相同的函数吗?那么它就不能工作了,因为这个函数需要传递一个整数。

不鼓励使用相同的名称来指代两个不同的事物。实际上,我不知道你的测试代码做什么或者应该做什么。您是否正在传递一个列表,并期望oddNumber对其进行适当的修改?

3)您的自定义命令解析器看起来...奇怪,脆弱。也许投资一个真正的解析器?你应该将命令解析和实际计算解耦。

正如brainovergrow指出的,这也是你的错误,因为.startswith不接受字符串作为第二个参数。

一些一般性的提示:

[0,1,2,3,4,5,6,7,8]

  • You您可以使用list(range(9))代替硬编码您可以使用filter来过滤给定列表的奇数:>>> list(filter(oddNumber, range(9)))结果[1, 3, 5, 7].

  • You也可以使用>>> list(filter(oddNumber, range(9)))[x for x in range(9) if x%2]结果相同。

  • 您可能会发现<代码>D21和<代码>D22很有用。看看他们,

  • ,你的命名模式是近乎一致的,也不是巨蟒式的。有关风格指南,请阅读PEP8
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26573739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档