Python 如何打印上一行/多行?

Python 如何打印上一行/多行?,python,python-3.x,Python,Python 3.x,对于所有有效的数字,它都应该这样做 编辑:我将eval改为int 任何建议都有帮助!谢谢。撤销您的测试,根据=进行测试,而不是=,并且不要使用elif(这会使通过的第一个测试阻止任何其他测试执行),如果,只需简单的。现在,每个通过的测试都会按顺序打印 3 french hens. 2 turtle doves 1 partridge in a pear tree. 我所做的是反转它们,这样它们从最大值到最小值进行打印,如果大于该数字,则使==到>=进行打印 if key >= 5:

对于所有有效的数字,它都应该这样做

编辑:我将eval改为int


任何建议都有帮助!谢谢。

撤销您的测试,根据
=
进行测试,而不是
=
,并且不要使用
elif
(这会使通过的第一个测试阻止任何其他测试执行),如果
,只需简单的
。现在,每个通过的测试都会按顺序打印

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

我所做的是反转它们,这样它们从最大值到最小值进行打印,如果大于该数字,则使==到>=进行打印

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.")

如果您想要整数,请不要执行
eval(输入(…)
。这只是要求输入一个错误,以无意的方式破坏您的代码
int(input(…)
将使有效的输入工作,并对无效的输入产生可预测的
ValueError
s,无需
eval
@ShadowRanger哦,好的,谢谢你,我会去修复的!我还需要打印其他行的帮助。@ShadowRanger这更有意义。再次感谢你!好的,明白了。非常感谢你!非常感谢你!很明显我现在做错了什么。这比我的助教试图教给我们的更有意义——我赞成重构,但不要使用列表理解来产生副作用(比如
print
ing)。这只意味着在枚举(礼物)中为ind、val创建一个普通循环时,毫无理由地使临时
列表充满
None
如果ind>=key:print(val)
将很好地完成这项工作。除了临时性的,任何使用功能性编程工具(如listcomps)产生副作用都是维护的噩梦;功能性风格旨在尽量减少副作用和远距离动作。哦,天哪,我可以想象它是多么乏味!谢谢你的建议。我会在以后的任务中记住这一点!这封信是在没有上下文和明确指示的情况下给我的D
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()

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)