2 回答

TA贡献1829条经验 获得超13个赞
反转您的测试,使它们基于>=、not==和不使用elif(这使得通过的第一个测试阻止任何其他测试执行),只是简单的if. 现在,每个通过的测试都会按顺序打印。
if key >= 5:
print("5 Golden Rings.")
if key >= 4:
print("4 Calling Birds.")
if key >= 3:
print("3 French Hens.")
if key >= 2:
print("2 Turtle Doves.")
if key >= 1:
print("1 Partridge in a Pear Tree.")

TA贡献1845条经验 获得超8个赞
我所做的是反转它们,以便它们从最大到最小打印,如果大于该数字,则将 == 设置为 >= 进行打印。
from sys import exit
key = int(input("Choose a Christmas Gift from 1 to 5!"))
if type(key) != type(0):
print("Please enter a number.")
exit()
if not (1 <= key <= 5):
print(key,"is an invalid number.")
exit()
if key >= 5:
print("5 Golden Rings.")
if key >= 4:
print("4 Calling Birds.")
if key >= 3:
print("3 French Hens.")
if key >= 2:
print("2 Turtle Doves.")
if key >= 1:
print("1 Partridge in a Pear Tree.")
但是,如果您想扩展它,请执行以下操作:
from sys import exit
key = int(input("Choose a Christmas Gift from 1 to 5!"))
if type(key) != type(0):
print("Please enter a number.")
exit()
if not (1 <= key <= 5):
print(key,"is an invalid number.")
exit()
gifts = ["1 partridge in a pair tree","2 turtle doves","etc..","etc..","etc.."]
printer = [print (val) for ind,val in enumerate (gifts) if ind >=key]
打印机通过使用列表理解来工作,这与所说的相同
for ind,val in enumerate(gifts):
if ind >= key:
print(val)
添加回答
举报