为什么 if 和 else 语句都被执行 {python}

悉达多摩哈巴特拉

我已经在商店类方法搜索中提到如果 for 循环结束并且仍然没有返回则返回 None 并且在 main 中我只写了如果它是 none 然后什么都不打印但它仍然打印“什么”我不认为有任何缩进正如在类似类型的问题中指出的那样

class book:
    def __init__(self,_id,name,tech,price,auth):
        self._id=_id
        self.name=name
        self.tech=tech
        self.price=price
        self.auth=auth
    
    def _print(self):
        print(self._id)
        print(self.name)
        print(self.tech)
        print(self.price)
        print(self.auth)
    
class store:
    def __init__(self,bookdb,name='abc'):
        self.bookdb=bookdb
        self.name=name
    
    def search(self,b_name,book_list):
        for i in book_list:
            if i.name==b_name:
                return i._print()
        else:
            return None
    def discount(self,tech,book_list):
        amt=0
        for i in book_list:
            if i.tech==tech:
                amt+=i.price
        return amt*(0.9)

if __name__=="__main__":
    t = int(input())
    b_list=[]
    bookdb=dict()
    for i in range(t):
        _id=int(input())
        name=str(input())
        tech=str(input())
        price=int(input())
        auth=str(input())
        b_list.append(book(_id,name,tech,price,auth))
        bookdb[i]=book(_id,name,tech,price,auth)
    
    title=str(input())
    tech=str(input())
    
    store_i=store(bookdb)
    
    if store_i.search(title,b_list)== None:
        print('nothing')
    else:
        store_i.search(title,b_list)
    
    if store_i.discount(tech,b_list)== 0:
        print('0.0')
    else:
        print(store_i.discount(tech,b_list))
        
**Input**

3
1
TIC
CPP
300
Online
2
CR
JAVA
500
BSwamy
3
BR
JAVA
700
RAJA
TIC
JAVA

输出

1
TIC
CPP
300
Online
nothing
1080.0

需要输出

1
TIC
CPP
300
Online
1080.0

PS bookdb dic 在这里没有任何用处

若昂

class book中_print()方法没有return语句,所以python会隐式返回None。然后在搜索函数中,当您返回 i._print() 时,它也会返回None,这就是您看到“无”输出的原因。

既然你要测试结果,你不妨让search()返回一个布尔值,这里有一个建议的编辑:

def search(self,b_name,book_list):
    for i in book_list:
        if i.name==b_name:
            i._print()
            return True
    else:
        return False

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么此Python语句中的“和/或”操作行为异常?

Python为什么在else语句后用错误消息响应?

为什么python在for和while循环之后使用'else'?

为什么python在for和while循环之后使用'else'?

在switch语句中,为什么所有情况都被执行?

Java If和else语句均被执行

为什么同时运行“ else”和“ if”语句?

Python学习-if,elif和else语句-某些条件为true但未执行(打印),为什么?

For循环和Python中的else语句

为什么我的 Print 语句没有被执行?

为什么在使用 scanf() 和 printf() 时没有执行 else 语句?

python同时执行if和else语句

为什么 if/else 语句在 Object.assign() 和 .map 中不起作用?

Python:IF ELSE 都被执行

为什么在 rspec 测试期间“end”和“else”语句不计入代码覆盖率?

else if 和 else 语句被忽略

if 和 else 条件都被执行

为什么python代码不能到达else语句?

为什么else语句没有执行?

为什么我的“else”语句在 python 中不起作用?

为什么 while 不适用于 if 语句和 else

为什么要在多个 if 语句上使用 elif 和 else?

如何向python添加if和else语句?

IF 和 ELSE 语句中的代码都被执行

为什么我的 If 和 Else 语句不执行任何操作?(c++)

为什么 else if 和 else 在这里表现不同?

Python if 和 else 语句不是预期的输出

为什么 if 和 else 两个条件在 JavaScript 中同时执行?If 和 Else 条件

为什么 if 和 else 都条件在 JavaScript 中同时执行?If 和 Else 条件