Python 如何正确地为循环切片?

Python 如何正确地为循环切片?,python,python-3.x,list,Python,Python 3.x,List,我想反转for循环,使其在用户输入的某个值处停止 例如,如果有一个列表Hello=[1,2,3,4,5,6,7,8] 用户输入一个5 有没有办法获得输出 四, 五, 六, 七, 八, 我试过了 user_input = str(input('')) for i in range(user_input): print(Hello[-i -1]) 比如我输入5 我得到输出 八, 七, 六, 五, 4这是一个简单的方法: user_input = int(input()) Hello

我想反转for循环,使其在用户输入的某个值处停止

例如,如果有一个列表
Hello=[1,2,3,4,5,6,7,8]
用户输入一个5 有没有办法获得输出

四,

五,

六,

七,

八,

我试过了

user_input = str(input(''))


for i in range(user_input):

   print(Hello[-i -1])
比如我输入5

我得到输出

八,

七,

六,

五,

4这是一个简单的方法:

user_input = int(input())

Hello = [1,2,3,4,5,6,7,8]
print(Hello[-user_input:])
输出:

4
5
6
7
8
[4,5,6,7,8]

如果您希望每个数字都打印在自己的行上,可以这样做:

user_input = int(input())

Hello = [1,2,3,4,5,6,7,8]
print(*Hello[-user_input:], sep='\n')
输出:

4
5
6
7
8

您可以使用python切片和索引方法来实现这一点

index()方法在列表中查找给定元素并返回其位置

代码:

hello = [1,2,3,4,5,6,7,8]
i = int(input('enter number: '))

if i in hello and hello.index(i) > 0:
    print(l[hello.index(i)-1:])

else:
    print('cant do this')
注意:

hello = [1,2,3,4,5,6,7,8]
i = int(input('enter number: '))

if i in hello and hello.index(i) > 0:
    print(l[hello.index(i)-1:])

else:
    print('cant do this')
您应该检查该元素是否存在于列表中,或者使用try:except扭曲您的语句,否则如果用户输入的数字不在列表中,您将得到ValueError


如果用户输入列表中的第一个元素,或者您将获得意外值,您还应该实现该操作。

我的理解是,您需要在列表中找到输入值的索引,并将列表从索引前的一个值切片到最后:

start = Hello.index(user_input) - 1
print(Hello[start:])

如果要反转列表,可以使用
list.reverse()
。 为了使代码实现您提到的功能,您可以使用以下代码:

Hello = [1,2,3,4,5,6,7,8]
a = int(input("Please input your number: "))
if a <= len(Hello):
    Hello.reverse()
    print(Hello[:a])
else:
    print("The value is too big")
Hello=[1,2,3,4,5,6,7,8]
a=int(输入(“请输入您的号码:”)

如果尝试:将输入转换为整数,在列表中找到元素的索引,然后对列表进行切片。那么您希望
[8,7,6,5,4]
还是
[4,5,6,7,8]
4,5,6,7,8
连接到输入的
5
?是否要打印最后5个数字?你所说的“中断”是什么意思?这个标题有误导性。这是关于切片,而不是反转。对于用户输入=9,返回什么?当我打印时(hello[-user\u input:,sep='\n')我仍然得到[4,5,6,7,8]@BobKim你忘记了
*
print(*hello…
它用于将列表解压到打印函数。你可以通过简单的谷歌搜索阅读更多关于解压列表/元组的内容:)@BobKim btw,如果您觉得我的回答对您有帮助,请随时将其标记为已接受:)