Python切片使用求助:自定义起始结束索引的代码运行异常
问题排查与修复方案
嘿,我一眼就看出你代码里的问题啦!咱们来快速解决它~
核心问题:输入类型不匹配
你用input()获取的用户输入默认是字符串类型,但Python对序列(比如你这里的字符串mystring)做切片操作时,需要的是整数类型的索引值。直接把字符串类型的x和y放到切片里,Python就会抛出TypeError: slice indices must be integers or None or have an __index__ method的异常。
修复后的基础代码
只需要把用户输入转成整数类型就可以啦,修改后的代码如下:
mystring = "Omar Marouf Zaki" print("Choose First Number") x = int(input()) # 将输入转换为整数 print("Choose Second Number") y = int(input()) # 将输入转换为整数 print(mystring[x:y])
进阶优化建议(提升用户体验)
为了避免用户输入非数字内容或者超出范围的索引导致程序异常,你可以添加异常处理和输入提示:
mystring = "Omar Marouf Zaki" str_length = len(mystring) print(f"提示:当前字符串长度为 {str_length},请输入0到{str_length}之间的整数哦~") # 循环获取有效的起始索引 while True: try: x = int(input("请输入起始索引:")) break except ValueError: print("哎呀,输入无效,请输入一个整数!") # 循环获取有效的结束索引 while True: try: y = int(input("请输入结束索引:")) break except ValueError: print("哎呀,输入无效,请输入一个整数!") print(f"截取结果:{mystring[x:y]}")
这样即使用户不小心输入了字母或者符号,程序也不会直接崩溃,而是友好提示重新输入~
内容的提问来源于stack exchange,提问作者Omar Oshiba
相关产品推荐
相关产品推荐

