Issue with Slicing in Python
我刚接触过python,目前正在做一个涉及切片的练习。这个练习包括以任何方式切割绳子"披萨"。输入切片的开始和结束位置,程序将显示结果。这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #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(" Start:")) if start: finish=int(input("Finish:")) print("word[",start,":",finish,"] is", word[start:finish]) |
问题是,当我输入"0"的起始值时,无法输入结束值-"Start:"将再次出现。我认为这可能与"start=none"语句有关。另一个问题是输入负的起始值和结束值不起作用,也不会返回切片。不知道为什么。
谢谢你的帮助。
问题
如果将
1 2 3 4 5 6 | >>> if 0: ... print('0 == True') ... else: ... print('0 == False') ... 0 == False |
另一个问题
1 2 3 4 5 | >>> word ="pizza" >>> word[1:3] 'iz' >>> word[-4:3] 'iz' |
号
如果第一个索引大于(或等于)第二个索引,则生成空字符串:
1 2 3 4 | >>> word[4:3] '' >>> word[3:3] '' |
负指数相同:
1 2 | >>> word[-1:3] '' |
。
如果您想了解更多关于Python切片的信息,请查看以下内容:
python切片表示法
由于空字符串和0的值都为false,所以错误很可能是由
1 2 | if isinstance(start,int): #do something |
但是,如果输入的数字超出-5到5的范围,则接受任何可能导致问题的整数。相反,您可以使用
1 2 | if start in range(-5,6): #do something |
。