第十二节 if语句2

5.3 if 语句

理解条件测试后,就可以开始编写if 语句了。if 语句有很多种,选择使用哪种取决于要测试的条件数。前面讨论条件测试时,列举了多个if 语句示例,下面更深入地讨论这个主题。

5.3.1 简单的if 语句

最简单的if 语句只有一个测试和一个操作:

if conditional_test: 
    do something

第一行可包含任何条件测试,而在紧跟在测试后面的缩进代码块中,可执行任何操作。如果条件测试的结果为True,Python就会执行紧跟在if 语句后面的代码,否则Python将忽略这些代码。

假设有一个表示某人年龄的变量,而你想知道这个人是否符合投票的年龄,可使用 如下代码:

voting.py

age = 19 
if age >= 18:❶ 
    print("You are old enough to vote!")❷

在❶处,Python检查变量age的值是否大于或等于18。答案是肯定的,因此Python 执行❷处缩进的函数调用print() :

You are old enough to vote!

在if 语句中,缩进的作用与在for 循环中相同。如果测试通过了,将执行if 语句后面所有缩进的代码行,否则将忽略它们。

在紧跟if 语句后面的代码块中,可根据需要包含任意数量的代码行。下面在一个人符合投票年龄时再打印一行输出,问他是否登记了:

age = 19
if age >= 18:
     print("You are old enough to vote!")
     print("Have you registered to vote yet?")

条件测试通过了,而且两个函数调用print() 都缩进了,因此它们都将执行:

You are old enough to vote!
Have you registered to vote yet?

如果age 的值小于18,这个程序将不会有任何输出。

5.3.2 if-else 语句

我们经常需要在条件测试通过时执行一个操作,在没有通过时执行另一个操作。在这种情况下,可使用Python提供的if-else语句。if-else语句块类似于简单的if 语句,但其中的else语句让你能够指定条件测试未通过时要执行的操作。

下面的代码在一个人符合投票年龄时显示与前面相同的消息,在不符合时显示一条新消息:

age = 17
if age >= 18:❶
    print("You are old enough to vote!")
    print("Have you registered to vote yet?")
else:❷
    print("Sorry, you are too young to vote.")
    print("Please register to vote as soon as you turn 18!")

如果❶处的条件测试通过了,就执行第一组缩进的函数调用print() 。如果测试结果为False ,就执行❷处的else 代码块。这次age 小于18,条件测试未通过,因此执行else 代码块中的代码:

Sorry, you are too young to vote.
Please register to vote as soon as you turn 18!

上述代码之所以可行,是因为只存在两种情形:要么符合投票年龄,要么不符合。if-else 结构非常适合用于让Python执行两种操作之一的情形。在这样简单的if- else 结构中,总是会执行两个操作中的一个。

5.3.3 if-elif-else 结 构

我们经常需要检查超过两个的情形,为此可使用Python提供的if-elif-else 结构。Python只执行if-elif-else 结构中的一个代码块。它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。

在现实世界中,很多情况下需要考虑的情形超过两个。例如,来看一个根据年龄段收费的游乐场:

  • 4岁以下免费;
  • 4~18岁收费25美元;
  • 18岁(含)以上收费40美元。

如果只使用一条if语句,该如何确定门票价格呢?下面的代码确定一个人所属的年龄段,并打印一条包含门票价格的消息:

amusement_park.py

age = 12
if age < 4:❶
    print("Your admission cost is $0.")
elif age < 18:❷
    print("Your admission cost is $25.")
else:❸
    print("Your admission cost is $40.")

❶处的if 测试检查一个人是否不满4岁。如果是,Python就打印一条合适的消息, 并跳过余下测试。❷处的elif 代码行其实是另一个if 测试,仅在前面的测试未通过时才会运行。在这里,我们知道这个人不小于4岁,因为第一个测试未通过。如果这个人未满18岁,Python将打印相应的消息,并跳过else 代码块。如果if 测试和elif 测试都未通过,Python将运行❸处else 代码块中的代码。

在本例中,❶处测试的结果为False ,因此不执行其代码块。然而,第二个测试的结果为True (12小于18),因此执行其代码块。输出为一个句子,向用户指出门票价格:

Your admission cost is $25.

只要年龄超过17岁,前两个测试就都不能通过。在这种情况下,将执行else 代码块,指出门票价格为40美元。

为了让代码更简洁,可不在if-elif-else 代码块中打印门票价格,而只在其中设置门票价格,并在它后面添加一个简单的函数调用print() :

age = 12
if age < 4:
    price = 0 ❶
elif age < 18:
    price = 25 ❷
else:
    price = 40 ❸
print(f"Your admission cost is ${price}.") ❹

❶处、❷处和❸处的代码行像前一个示例那样,根据人的年龄设置变量price 的值。在if-elif-else 结构中设置price 的值后,一条未缩进的函数调用print() ❹会根据这个变量的值打印一条消息,指出门票的价格。

这些代码的输出与前一个示例相同,但if-elif-else 结构的作用更小:它只确定门票价格,而不是在确定门票价格的同时打印一条消息。除效率更高外,这些修订后的代码还更容易修改:要调整输出消息的内容,只需修改一个而不是三个函数调用print() 。

5.3.4 使用多个elif 代码块

可根据需要使用任意数量的elif 代码块。例如,假设前述游乐场要给老年人打折,可再添加一个条件测试,判断顾客是否符合打折条件。下面假设对于65岁

(含)以上的老人,可半价(即20美元)购买门票:

age = 12
if age < 4:
    price = 0
elif age < 18:
    price = 25
elif age < 65:❶
    price = 40
else:❷
    price = 20
print(f"Your admission cost is ${price}.")

这些代码大多未变。第二个elif 代码块(见❶)通过检查确定年龄不到65岁后,才将门票价格设置为全票价格——40美元。请注意,在else 代码块(见❷)中,必须将所赋的值改为20,因为仅当年龄超过65岁(含)时,才会执行这个代码块。

5.3.5 省略else 代码块

Python并不要求if-elif 结构后面必须有else 代码块。在有些情况下,else 代码块很有用;而在其他一些情况下,使用一条elif 语句来处理特定的情形更清晰:

age = 12
if age < 4:
    price = 0
elif age < 18:
    price = 25
elif age < 65:
    price = 40
elif age >= 65:❶
    price = 20
print(f"Your admission cost is ${price}.")

❶处的elif 代码块在顾客的年龄超过65岁(含)时,将价格设置为20美元。这比使用else 代码块更清晰些。经过这样的修改后,每个代码块都仅在通过了相应的测试时才会执行。

else 是一条包罗万象的语句,只要不满足任何if 或elif 中的条件测试,其中的代码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应  考虑使用一个elif 代码块来代替else 代码块。这样就可以肯定,仅当满足相应的条件时,代码才会执行。

5.3.6 测试多个条件

if-elif-else 结构功能强大,但仅适合用于只有一个条件满足的情况:遇到通过了的测试后,Python就跳过余下的测试。这种行为很好,效率很高,让你能够测试  一个特定的条件。

然而,有时候必须检查你关心的所有条件。在这种情况下,应使用一系列不包含elif 和else 代码块的简单if 语句。在可能有多个条件为True 且需要在每个条件为True 时都采取相应措施时,适合使用这种方法。

下面再来看看前面的比萨店示例。如果顾客点了两种配料,就需要确保在其比萨中 包含这些配料:

toppings.py

requested_toppings = ['mushrooms', 'extra cheese']❶
if 'mushrooms' in requested_toppings:❷
    print("Adding mushrooms.")
if 'pepperoni' in requested_toppings:❸
    print("Adding pepperoni.")
if 'extra cheese' in requested_toppings:❹
    print("Adding extra cheese.")
print("\nFinished making your pizza!")

首先创建一个列表,其中包含顾客点的配料(见❶)。❷处的if 语句检查顾客是否点了配料蘑菇(mushrooms)。如果点了,就打印一条确认消息。❸处检查配料辣香  肠(pepperoni)的代码也是一个简单的if 语句,而不是elif 或else 语句。因此不管前一个测试是否通过,都将进行这个测试。❹处的代码检查顾客是否要求多加 芝士(extra cheese)。不管前两个测试的结果如何,都会执行这些代码。每当这个程序运行时,都会执行这三个独立的测试。

因为本例检查了每个条件,所以将在比萨中添加蘑菇并多加芝士:

Adding mushrooms.
Adding extra cheese.

Finished making your pizza!

如果像下面这样转而使用if-elif-else 结构,代码将不能正确运行,因为有一个测试通过后,就会跳过余下的测试:

requested_toppings = ['mushrooms', 'extra cheese']
if 'mushrooms' in requested_toppings:
    print("Adding mushrooms.")
elif 'pepperoni' in requested_toppings:
    print("Adding pepperoni.")
elif 'extra cheese' in requested_toppings:
    print("Adding extra cheese.")
print("\nFinished making your pizza!")

第一个测试检查列表中是否包含'mushrooms' 。它通过了,因此将在比萨中添加蘑菇。然而,Python将跳过if-elif-else 结构中余下的测试,不再检查列表中是否包含'pepperoni' 和'extra cheese' 。结果是,将添加顾客点的第一种配料,但不会添加其他配料:

Adding mushrooms.

Finished making your pizza!

总之,如果只想执行一个代码块,就使用if-elif-else 结构;如果要执行多个代码块,就使用一系列独立的if 语句。

动手试一试

练习5-3:外星人颜色

假设在游戏中刚射杀了一个外星人,请创建一个名为alien_color 的变量,并将其赋值为'green' 、'yellow' 或'red' 。

  • 编写一条if 语句,检查外星人是否是绿色的。如果是,就打印一条消息, 指出玩家获得了5分。
  • 编写这个程序的两个版本,在一个版本中上述测试通过了,而在另一个版本中未通过(未通过测试时没有输出)。
alien_color = 'green'
if alien_color == 'green':
print("玩家获得5分。")

alien_color = 'green'
if alien_color == 'yellow':
print("玩家获得5分。")

练习5-4:外星人颜色2

像练习5-3那样设置外星人的颜色,并编写一个if- else 结构。

  • 如果外星人是绿色的,就打印一条消息,指出玩家因射杀该外星人获得了5 分。
  • 如果外星人不是绿色的,就打印一条消息,指出玩家获得了10分。
  • 编写这个程序的两个版本,在一个版本中执行if 代码块,在另一个版本中执行else 代码块。
alien_color = 'yellow'
if alien_color == 'green':
    print("击中绿色外星人,获得5分。")
else:
    print("获得10分。")

alien_color = 'green'
if alien_color == 'green':
    print("击中绿色外星人,获得5分。")
else:
    print("获得10分。")

练习5-5:外星人颜色3

将练习5-4中的if-else 结构改为if-elif-else 结构。

  • 如果外星人是绿色的,就打印一条消息,指出玩家获得了5分。
  • 如果外星人是黄色的,就打印一条消息,指出玩家获得了10分。
  • 如果外星人是红色的,就打印一条消息,指出玩家获得了15分。
  • 编写这个程序的三个版本,分别在外星人为绿色、黄色和红色时打印一条消息。
alien_color = 'green'
if alien_color == 'green':
    print("击中绿色外星人,获得5分。")
elif alien_color == 'yellow':
    print("击中黄色外星人,获得10分。")
else:
    print("击中红色外星人,获得15分。")

练习5-6:人生的不同阶段

设置变量age 的值,再编写一个if-elif-else 结构,根据age 的值判断一个人处于人生的哪个阶段。

  • 如果年龄小于2岁,就打印一条消息,指出这个人是婴儿。
  • 如果年龄为2(含)~4岁,就打印一条消息,指出这个人是幼儿。
  • 如果年龄为4(含)~13岁,就打印一条消息,指出这个人是儿童。
  • 如果年龄为13(含)~20岁,就打印一条消息,指出这个人是青少年。
  • 如果年龄为20(含)~65岁,就打印一条消息,指出这个人是成年人。
  • 如果年龄超过65岁(含),就打印一条消息,指出这个人是老年人。
age = 20
if age < 2:
    print('婴儿')
elif age < 4:
    print('幼儿')
elif age < 13:
    print('儿童')
elif age < 20:
    print('青少年')
elif age < 65:
    print('成年人')
else:
    print('老年人')

练习5-7:喜欢的水果

创建一个列表,其中包含你喜欢的水果,再编写一系列独立的if 语句,检查列表中是否包含特定的水果。

  • 将该列表命名为favorite_fruits ,并在其中包含三种水果。
  • 编写5条if 语句,每条都检查某种水果是否包含在列表中。如果是,就打印一条消息,下面是一个例子。

You really like bananas!

favorite_fruits = ["apple","pear","strawberry"]
if "apple" in favorite_fruits:
    print("You really like apples.")
if "banana" in favorite_fruits:
    print("You really like bananas.")
if "pear" in favorite_fruits:
    print("You really like pears.")
if "orange" in favorite_fruits:
    print("You really like oranges.")
if "strawberry" in favorite_fruits:
    print("You really like strawberrys.")

5.4 使用if 语句处理列表

通过结合使用if 语句和列表,可完成一些有趣的任务:对列表中特定的值做特殊处理;高效地管理不断变化的情形,如餐馆是否还有特定的食材;证明代码在各种情形下都将按预期那样运行。

5.4.1 检查特殊元素

本章开头通过一个简单示例演示了如何处理特殊值'bmw'  ——它需要采用不同的格式进行打印。现在你对条件测试和if 语句有了大致的认识,下面就来进一步研究如何检查列表中的特殊值,并对其做合适的处理。

继续使用前面的比萨店示例。这家比萨店在制作比萨时,每添加一种配料都打印一 条消息。通过创建一个列表,在其中包含顾客点的配料,并使用一个循环来指出添加到比萨中的配料,能以极高的效率编写这样的代码:

toppings.py

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:
    print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")

输出很简单,因为上述代码不过是一个简单的for 循环:

Adding mushrooms.
Adding green peppers.
Adding extra cheese.

Finished making your pizza!

然而,如果比萨店的青椒用完了,该如何处理呢?为妥善地处理这种情况,可在for 循环中包含一条if 语句:

requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']
for requested_topping in requested_toppings:
    if requested_topping == 'green peppers':❶
        print("Sorry, we are out of green peppers right now.")
    else:❷
        print(f"Adding {requested_topping}.")
print("\nFinished making your pizza!")

这里在比萨中添加每种配料前都进行检查。❶处的代码检查顾客是否点了青椒。如果是,就显示一条消息,指出不能点青椒的原因。❷处的else 代码块确保其他配料都将添加到比萨中。

输出表明,已经妥善地处理了顾客点的每种配料:

Adding mushrooms.
Sorry, we are out of green peppers right now.
Adding extra cheese.

Finished making your pizza!

5.4.2 确定列表不是空的

到目前为止,我们对于处理的每个列表都做了一个简单的假设——假设它们都至少 包含一个元素。因为马上就要让用户来提供存储在列表中的信息,所以不能再假设 循环运行时列表不是空的。有鉴于此,在运行for 循环前确定列表是否为空很重要。

下面在制作比萨前检查顾客点的配料列表是否为空。如果列表为空,就向顾客确认 是否要点原味比萨;如果列表不为空,就像前面的示例那样制作比萨:

requested_toppings = []❶
if requested_toppings:❷
    for requested_topping in requested_toppings:
        print(f"Adding {requested_topping}.")
    print("\nFinished making your pizza!")
else:❸
    print("Are you sure you want a plain pizza?")

首先创建一个空列表,其中不包含任何配料(见❶)。❷处进行简单的检查,而不是直接执行for 循环。在if 语句中将列表名用作条件表达式时,Python将在列表至少包含一个元素时返回True ,并在列表为空时返回False 。如果requested_toppings 不为空,就运行与前一个示例相同的for 循环;否则,就打印一条消息,询问顾客是否确实要点不加任何配料的原味比萨(见❸)。

在这里,这个列表为空,因此输出如下——询问顾客是否确实要点原味比萨:

Are you sure you want a plain pizza?

如果这个列表不为空,输出将显示在比萨中添加的各种配料。

5.4.3 使用多个列表

顾客的要求往往五花八门,在比萨配料方面尤其如此。如果顾客要在比萨中添加炸 薯条,该怎么办呢?可使用列表和if 语句来确定能否满足顾客的要求。

来看看在制作比萨前如何拒绝怪异的配料要求。下面的示例定义了两个列表,其中 第一个列表包含比萨店供应的配料,而第二个列表包含顾客点的配料。这次对于requested_toppings 中的每个元素,都检查它是否是比萨店供应的配料,再决定是否在比萨中添加它:

available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']❶
requested_toppings = ['mushrooms', 'french fries', 'extra cheese']❷
for requested_topping in requested_toppings:❸
    if requested_topping in available_toppings:❹
        print(f"Adding {requested_topping}.")
    else:❺
        print(f"Sorry, we don't have {requested_topping}.")
print("\nFinished making your pizza!")

❶处定义了一个列表,其中包含比萨店供应的配料。请注意,如果比萨店供应的配料 是固定的,也可使用一个元组来存储它们。❷处又创建了一个列表,其中包含顾客点 的配料。请注意那个不同寻常的配料——'french fries' 。在❸处遍历顾客点的配料列表。在这个循环中,对于顾客点的每种配料,都检查它是否包含在供应的配  料列表中(见❹)。如果答案是肯定的,就将其加入比萨中,否则将运行else 代码块(见❺):打印一条消息,告诉顾客不供应这种配料。

这些代码的输出整洁而翔实:

Adding mushrooms.
Sorry, we don't have french fries.
Adding extra cheese.

Finished making your pizza!

通过为数不多的几行代码,我们高效地处理了一种真实的情形!

动手试一试

练习5-8:以特殊方式跟管理员打招呼

创建一个至少包含5个用户名的列表, 且其中一个用户名为'admin' 。想象你要编写代码,在每位用户登录网站后都打印一条问候消息。遍历用户名列表,并向每位用户打印一条问候消息。

  • 如果用户名为'admin' ,就打印一条特殊的问候消息,如下所示。

Hello admin, would you like to see a status report?

  • 否则,打印一条普通的问候消息,如下所示。

Hello Jaden, thank you for logging in again. 

names = ['alan','mike','admin','james','paul']
for name in names:
    if name == 'admin':
        print("Hello admin,would you like to see a status report?")
    else:
        print(f"Hello {name},thank you for logging in again.")

练习5-9:处理没有用户的情形

在为完成练习5-8编写的程序中,添加一条if 语句,检查用户名列表是否为空。

  • 如果为空,就打印如下消息。

We need to find some users!

  • 删除列表中的所有用户名,确定将打印正确的消息。
names = []
if names:
    for name in names:
        if name == 'admin':
            print("Hello admin,would you like to see a status report?")
        else:
            print(f"Hello {name},thank you for logging in again.")
else:
    print("We need find some users!")

练习5-10:检查用户名

按下面的说明编写一个程序,模拟网站如何确保每位用户的用户名都独一无二。

  • 创建一个至少包含5个用户名的列表,并将其命名为current_users 。
  • 再创建一个包含5个用户名的列表,将其命名为new_users ,并确保其中有一两个用户名也包含在列表current_users 中。
  • 遍历列表new_users ,对于其中的每个用户名,都检查它是否已被使用。如果是,就打印一条消息,指出需要输入别的用户名;否则,打印一条消息,指出这个用户名未被使用。
  • 确保比较时不区分大小写。换句话说,如果用户名'John' 已被使用,应拒绝用户名'JOHN' 。(为此,需要创建列表current_users 的副本, 其中包含当前所有用户名的小写版本。)
current_users = ['john','amey','smith','mike','james']
new_users = ['alan','mike','admin','JAMES','paul']
for new_user in new_users:
    if new_user in current_users or new_user.lower() in current_users:
        print(f"{new_user} has been used.Please enter another name!")
    else:
        print(f"{new_user} has not been used.")

练习5-11:序数

序数表示位置,如1st和2nd。序数大多以th结尾,只有1、2 和3例外。

  • 在一个列表中存储数字1~9。
  • 遍历这个列表。
  • 在循环中使用一个if-elif-else 结构,以打印每个数字对应的序数。输出内容应为"1st 2nd 3rd 4th 5th 6th 7th 8th 9th" ,但每个序数都独占一行。
numbers = [1,2,3,4,5,6,7,8,9]
for number in numbers:
    if number == 1:
        print("1st")
    elif number == 2:
        print("2nd")
    elif number == 3:
        print("3rd")
    else:
        print(f"{number}th")

5.5 设置if 语句的格式

本章的每个示例都展示了良好的格式设置习惯。在条件测试的格式设置方面,PEP 8 提供的唯一建议是,在诸如== 、>= 和

if age < 4:

要比

if age<4:

更好。

这样的空格不会影响Python对代码的解读,而只是让代码阅读起来更容易。

动手试一试

练习5-12:设置if 语句的格式

审核你在本章编写的程序,确保正确地设置了条件测试的格式。

练习5-13:自己的想法

与刚拿起本书时相比,现在你是一名能力更强的程序员了。鉴于你对如何在程序中模拟现实情形有了更深入的认识,可以考虑使用 程序来解决一些问题了。随着编程技能不断提高,你可能想解决一些问题,请将这方面的想法记录下来。想想你可能想编写的游戏、想研究的数据集以及想  创建的Web应用程序。

5.6 小结

在本章中,你学习了:

如何编写结果要么为True 要么为False 的条件测试;

如何编写简单的if 语句、if-else 语句和if-elif-else 结构,并且在程序中使用这些结构来测试特定的条件,以确定这些条件是否满足;

如何在利用高效的for循环的同时,以不同于其他元素的方式对特定的列表元素进行处理。

你还再次学习了Python就代码格式提出的建议,从而确保即便编写的程序越来越复杂,其代码依然易于阅读和理解。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 水仙花数是指一个三位数,其各位数字的立方和等于该数本身。我们可以使用编程语言使用if语句来找出所有的三位水仙花数。 以下是Python语言的示例代码: ``` for i in range(100, 1000): a = i // 100 b = (i % 100) // 10 c = i % 10 if a ** 3 + b ** 3 + c ** 3 == i: print(i) ``` 在上面的代码中,我们使用for循环来遍历所有三位数,然后使用整除和取余运算符来获取每个数的百位数、十位数和个位数。接着,我们使用if语句来判断该数是否为水仙花数,如果是,就输出该数。 运行以上代码,将会得到如下结果: ``` 153 370 371 407 ``` 因此,所有的三位水仙花数为153、370、371和407。 ### 回答2: 水仙花数是指一个三位数,它的每个位上的数字的立方和等于该数本身。现在我们使用编程来求解所有的三位水仙花数。 首先,我们可以使用三个嵌套的for循环,表示所有可能的三位数。第一个for循环表示百位数字,从1到9;第二个for循环表示十位数字,从0到9;第三个for循环表示个位数字,从0到9。 在每次循环中,我们可以使用if语句来判断当前的三位数是否为水仙花数。在if语句中,我们可以使用数学运算来计算当前三位数的每个位上数字的立方和,并与该数本身进行比较。 以下是一个Python语言编写的例子,用来求出所有的三位水仙花数: ```python for i in range(1, 10): for j in range(0, 10): for k in range(0, 10): num = i*100 + j*10 + k if num == i**3 + j**3 + k**3: print(num) ``` 运行以上代码,会输出所有的三位水仙花数: 153 370 371 407 这些数字都满足一个条件:它的每一位上的数字的立方和等于它本身。 ### 回答3: 水仙花数,也被称为阿姆斯特朗数,是指一个n位数,每个位上的数字的n次幂之和等于该数本身。现在需要编程求出所有的三位水仙花数。 首先,我们知道三位数的范围是从100到999。所以我们可以使用循环,从100开始到999结束,依次判断是否是水仙花数。具体的编程思路如下: 1. 初始化一个空列表,用于存储三位水仙花数。 2. 使用for循环,遍历从100到999的所有数字。 3. 在循环内部,将当前数字分解为百位、十位和个位的数字。 4. 利用if语句判断当前数字是否满足水仙花数的条件:各个位的数字的三次幂之和等于该数本身。 5. 如果满足条件,则将当前数字添加到列表中。 6. 循环结束后,输出列表中的所有水仙花数。 下面是使用Python编写的程序示例: ```python # 初始化空列表 narcissus_nums = [] # 遍历所有三位数 for num in range(100, 1000): # 分解数字得到百位、十位和个位的数字 hundreds = num // 100 tens = (num // 10) % 10 ones = num % 10 # 判断是否为水仙花数 if num == (hundreds ** 3 + tens ** 3 + ones ** 3): # 添加到水仙花数列表 narcissus_nums.append(num) # 输出水仙花数列表 print(narcissus_nums) ``` 执行上述程序,即可得到所有的三位水仙花数。这里会输出:[153, 370, 371, 407],它们是三位数中的水仙花数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值