Python中字符串无法使用endswith()函数怎么办?

准备做一个显示数字读作什么的程序,转换了字符串还说不能用整数完整代码:num = float(input("输入数字(范围: -999999999999~999999999999, 支持小数): "))point = 0num_ = str(num)pointr = Nonepointr_ = Noneintn = 0finar = Noneintr_ = Nonenumrd = {"1":"一","2":"二","3":"三","4":"四","5":"五","6":"六","7":"七","8":"八","9":"九","0":"零"}if num_.startswith("-"): finar = "负"if num_.endswith(".0"): point = Noneelse: point = num_.find(".",0,len(num_)-1) pointnum = num_[point+1:len(num_)] pointnum_ = len(str(pointnum))if point == None: pointr = Noneelse: pointr_ = "" for i in range(1,pointnum_+1): pointr = numrd[str(pointnum)[i-1]] pointr_ = str(pointr_) + str(pointr)if num_.startswith("0.") or num_.startswith("-0."): intn = Noneelse: if num > 0: intn = len(num_)-pointnum_-1 intn_ = num_[0:intn] elif num < 0: intn = len(num_)-pointnum_-2 intn_ = num_[1:intn+1]if intn == 1: intr_ = numrd[str(intn_)]if intn == 2: if str(intn_).endswith(0): intr_ = numrd[str(intn_)[0]]+"十" else: intr_ = numrd[str(intn_)[0]]+"十"+numrd[str(intn_)[1]]if intn == 3: if str(intn_).endswith(00): intr_ = numrd[str(intn_)[0]]+"百" if str(intn_).endswith(0): intr_ = numrd[str(intn_)[0]]+"百"+numrd[str(intn_)[1]]+"十" else: intr_ = numrd[str(intn_)[0]]+"十"+numrd[str(intn_)[1]]+"十"+numrd[str(intn_)[2]]print(intr_)

Python中字符串无法使用endswith函数,先从错误信息仔细看起,找到对应的位置改代码。

根据错误信息反馈可知:在文件 "c: \Users\ABC11\Desktop\Python工具\数字读作.py" 中的第42行的语句if str( intn_).endswith(00):出错,其错误类型是数据类型错误: endswith的参数必须是一个字符串或者一个字符串的tuple元组而非int。

所以,需要根据错误信息把第42行代码改成if str( intn_).endswith("00"),当然根据代码的功能判断,错误远不止这一个:以下试图一一指出(此外,python的代码的缩进是必须的语法结构的部分,和C语言C++Java什么的是很不一样的,尽量截图python,不要直接复制粘贴,空格一被吞代码就难看了)

以下列举错误(从前往后):

①逻辑设计错误,在代码的前部,input函数读入的是字符串,num=float(input());语句将读入的字符串变成浮点数,然后却又把float类型的num变量使用str函数转换类型赋值给num_。这样做没有语法问题,只是逻辑不通:str转换成float再转换回str,是否多此一举呢;再者即使输入是整数不带小数点,经过str(float(input()))处理之后,结果一定会被加上小数点,那后面的if point==None:这一条件分支就完全不运行,你可以用一段小代码验证这一问题

错误1,输入不带小数点处理错误

②这个是程序逻辑上的,语法错误,pointnum_在for循环中有使用到,但是在上下文中,若输入为"123"这类无小数点的整数,均不能找到可以在输入为整数时的定义,根据①,需要在if num_.endswith(".0"):的语句块中增加一句pointnum_=0;

③原程序通篇下来就只有一个可怜的print(intr_)作为输出,我十分纳闷,40多行的代码就一行输出,根据上下文,这个intr_就是整数部分处理过的中文数字,很明显是不够程序要求的;再有,这个intn是表示整数部分的阿拉伯数字,先不说它前面的这个if-else语句块只有处理三位整数的能力,而与前面的高达10位数的处理能力明显不符,不细说了,只能做出比较大的改动了

1-32行修改后的代码

33-64行修改后的代码

64-73行修改后的代码

追答

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-07-29
是 endswith 的参数不能用整数 这个方法用于判断字符串的结束是否以另一个字符串结束 你传整数 那肯定有问题啊追问

主要是str已经贴脸endswith了 不过现在已经搞定了)感谢=)

本回答被提问者采纳
第2个回答  2021-07-28
麻烦你把代码截图一下 否则太难看
相似回答