1.P89页练习8-9
def show_message(new_message,ok_message):
while new_message:
now_message = new_message.pop()
print(f"ok messages are:{now_message}")
ok_message.append(now_message)
print(f"传输完成的message:{ok_message}")
new_message = ['ms1','ms2','ms3','ms4','ms5']
ok_message = []
show_message(new_message,ok_message)
在上述代码中,while new_message:
表达式的含义是只要 new_message
不为空,就会执行循环体内的代码。这是因为在Python中,非空列表会被视为True
,而空列表会被视为False
。
如果将 while new_message == True:
或 while new_message == False:
改为这样的条件,将会导致循环的行为不符合预期。因为在这种情况下,条件表达式会直接判断 new_message
是否等于布尔值 True
或 False
,而不是判断 new_message
是否为空列表。无论new_message
是否为空列表,这两个条件表达式始终会返回False
,导致循环体内的代码不会被执行。
因此,正确的方式是使用 while new_message: 来判断列表是否为空,以便正确执行循环。
2.这段代码为何会输出None?
def make_shirt(size,word):
return print(f"This is a {size} t-shirt with the word {word}")
clothes1 = make_shirt(size="small",word="1")
print(clothes1)
这段代码中会输出None的原因是因为在函数make_shirt()
中,return
语句返回的是print()
函数的返回值,而print()
函数总是返回None
。因此,虽然make_shirt()
函数内部打印出了一条带有参数的字符串,但是它实际上并没有返回任何有用的值。
当你执行clothes1 = make_shirt(size="small",word="1")
时,函数make_shirt()
会被调用,并且会打印出"This is a small t-shirt with the word 1"
这样一条字符串。但是由于return
语句返回的是print()
函数的返回值(即None
),所以clothes1
的值也是None
。