Python中的切片问题

2024-06-01 12:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,目前正在进行一个涉及切片的练习。这个练习包括以任何方式切开“披萨”的细线。输入切片的起始位置和结束位置,程序将显示结果。这是我的代码:

    #Pizza Slicer

print(
"""
  Slicing 'Cheat Sheet'

 0   1   2   3   4   5
 +---+---+---+---+---+ 
 | p | i | z | z | a | 
 +---+---+---+---+---+ 
-5  -4  -3  -2  -1

"""
)

word="pizza"

print("Enter the beginning and ending index for your slice of 'pizza'.")
print("Press the enter key at 'Begin' to exit.")

start=None      #initialise  
while start !="":  
    start=int(input("\nStart: "))

    if start:

        finish=int(input("Finish: "))

        print("word[",start,":",finish,"] is", word[start:finish])

问题是,当我输入起始值“0”时,无法输入完成值-“Start:”再次出现。我想这可能和“Start=None”语句有关。另一个问题是,输入负的起始值和结束值不起作用,也不会返回切片。不知道为什么。在

谢谢你的帮助。在


Tags: thenoneinput方式切片startwordint
3条回答

问题

如果0用作谓词,则将其视为False。在

>>> if 0:
...     print('0 == True')
... else:
...     print('0 == False')
...
0 == False

另一个问题

^{pr2}$

如果第一个索引大于(或等于)第二个索引,则生成空字符串:

>>> word[4:3]
''
>>> word[3:3]
''

负指数相同:

>>> word[-1:3]
''

您是正确的,错误很可能是由于start != "",因为空字符串和0的计算结果都为false。也许您可以使用isinstance中内置的Python,如下所示:

if isinstance(start,int):
    #do something

但是,这将接受任何整数,如果有人输入的数字超出范围-5到5,则可能会导致问题。相反,您可以使用range来设置可接受的值:

^{pr2}$

如果您想了解更多关于python切片的信息,请查看以下内容:

The python slice notation

相关问题 更多 >