如何打印上一行/多行?

时间:2018-09-21 01:26:42

标签: python python-3.x

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 == 1:
 print("1 Partridge in a Pear Tree.")
elif key == 2:
 print("2 Turtle Doves.")
elif key == 3:
 print("3 French Hens.")
elif key == 4:
 print("4 Calling Birds.")
elif key == 5:
 print("5 Golden Rings.")

我已经走了这么远(我对此很陌生,我做了我在课堂上看到的一切),但是当您输入数字时,我不知道如何打印前几行。

说我输入3。

输出应为:

3 french hens.
2 turtle doves
1 partridge in a pear tree.

它应该对所有有效数字执行此操作。

编辑:我将评估更改为整数。

任何建议都可以帮助您!谢谢。

2 个答案:

答案 0 :(得分:0)

撤消测试,使测试基于>=,而不是==,并且不要使用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.")

答案 1 :(得分:0)

我所做的是反转它们,以便它们从最大到最小打印,如果大于该数量,则将==打印为> =进行打印。

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)