我是python的新手,我目前正在进行涉及切片的练习。练习包括以任何方式切割字符串'Pizza'。您输入切片的起始位置和结束位置,程序将显示结果。这是我的代码:
#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 = None'语句有关。另一个问题是输入负的起始值和结束值不起作用,并且不会返回切片。不知道为什么。
感谢您的协助。
答案 0 :(得分:3)
如果0
用作谓词,则将其视为False。
>>> if 0:
... print('0 == True')
... else:
... print('0 == False')
...
0 == False
>>> word = "pizza"
>>> word[1:3]
'iz'
>>> word[-4:3]
'iz'
如果第一个索引大于(或等于)第二个索引,则产生空字符串:
>>> word[4:3]
''
>>> word[3:3]
''
负面指数相同:
>>> word[-1:3]
''
答案 1 :(得分:0)
你是正确的,错误很可能是由start != ""
引起的,因为空字符串和0都评估为false。也许你可以像isinstance
那样使用内置的pythons:
if isinstance(start,int):
#do something
但是,如果有人输入-5到5范围之外的数字,这将接受任何可能导致问题的整数。相反,您可以使用range
来设置可接受的值:
if start in range(-5,6):
#do something
答案 2 :(得分:0)
如果您想了解有关python切片的更多信息,请查看: