鱼C论坛

 找回密码
 立即注册
查看: 1363|回复: 13

[已解决]python字符串替换问题

[复制链接]
发表于 2020-9-29 18:37:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 VanessaXD 于 2020-9-29 22:41 编辑

请教一下各位大神,我这串代码有什么问题应该改正?为什么在将输入的浮点数中的奇数替换成8的时候,一部分可以替换,一部分不行?比如说100.5可以被替换成800.8,而100.3,或者100.7,只能被替换成800.3和800.7?
  1. numlist=[]
  2. list1=[]
  3. new=''
  4. while True:
  5.     a=input('')
  6.     if a=='x':
  7.         break
  8.     else:
  9.         numlist.insert(0,a)

  10. for i in range(len(numlist)):
  11.     for j in range(len(numlist[i])):
  12.         while True:
  13.             if numlist[i][j]=='1' or numlist[i][j]=='3' or numlist[i][j]=='5' or numlist[i][j]=='7' or numlist[i][j]=='9':
  14.                 new=str(numlist[i])[:j]+'8'+str(numlist[i])[j+1:]
  15.                 print(new)
  16.                 del numlist[i]
  17.                 numlist.insert(0,new)
  18.                 continue
  19.             else:
  20.                 break

  21. print(numlist)


  22. n=len(numlist)
  23. for z in range (n):
  24.     c=0
  25.     for l in range (0,n-1-z):
  26.         if numlist[l] > numlist[l+1]:
  27.             numlist[l],numlist[l+1] = numlist[l+1],numlist[l]
  28.             c+=1
  29.     if 0==c:
  30.         break

  31. for u in numlist:
  32.     print(u)
复制代码
最佳答案
2020-9-29 23:38:43
不用replace就换一种,不用sort就用冒泡排序,和你写的也一样,但是你说不用append,那怎么添加进列表,那能不能用split呢?
看你这题,其实我7楼回复的就符合题意,要复杂点下面这样也可以
  1. list1 = []
  2. while True:
  3.     a = input('请输入浮点:')
  4.     if a == 'x':
  5.         print('退出。')
  6.         break
  7.     else:
  8.         new = ''
  9.         for temp in list(a):
  10.             if (temp != '.') and (int(temp) % 2 != 0):
  11.                 temp = '8'
  12.             new = new + temp
  13.         list1.append(float(new))

  14. for i in range(len(list1)):
  15.     for j in range(0, len(list1) - i - 1):
  16.         if list1[j] > list1[j + 1]:
  17.             list1[j], list1[j + 1] = list1[j + 1], list1[j]

  18. for i in list1:
  19.     print(i)
复制代码
图像 29-9-20,下午6.27.jpg
图像 29-9-20,下午10.38.jpg
图像 29-9-20,下午10.39.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-29 18:38:33 | 显示全部楼层
题目要求
图像 29-9-20,下午6.27.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 18:48:42 | 显示全部楼层

回帖奖励 +1 鱼币

你贴的代码,就缩进有点问题,其他运行正常啊,然后不知道你是不是要保留输入的内容还是不保留,每次都输出一个的话就把前三句放到循环里重置为空,要保留的话就放循环外

  1. while True:
  2.     numlist = []
  3.     list1 = []
  4.     new = ''
  5.     a=input('请输入浮点数')
  6.     if a=='x':
  7.         break
  8.     else:
  9.         numlist.insert(0,a)

  10.     for i in range(len(numlist)):
  11.         for j in range(len(numlist[i])):
  12.             while True:
  13.                 if numlist[i][j]=='1' or numlist[i][j]=='3' or numlist[i][j]=='5' or numlist[i][j]=='7' or numlist[i][j]=='9':
  14.                     new=str(numlist[i])[:j]+'8'+str(numlist[i])[j+1:]
  15.                     #print(new)
  16.                     del numlist[i]
  17.                     numlist.insert(0,new)
  18.                     continue
  19.                 else:
  20.                     break

  21.     #print(numlist)


  22.     n=len(numlist)
  23.     for z in range (n):
  24.         c=0
  25.         for l in range (0,n-1-z):
  26.             if numlist[l] > numlist[l+1]:
  27.                 numlist[l],numlist[l+1] = numlist[l+1],numlist[l]
  28.                 c+=1
  29.         if 0==c:
  30.             break

  31.     for u in numlist:
  32.         print(u)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 18:57:45 | 显示全部楼层
你只要把奇数替换成8?那你写的也太复杂了吧,下面这样就行了
  1. while True:
  2.     new = ''
  3.     a = input('请输入数字:')
  4.     if a == 'x':
  5.         print('退出。')
  6.         break
  7.     else:
  8.         list1 = list(a)
  9.         for num in range(len(list1)):
  10.             if (list1[num].isdigit() == True) and (int(list1[num]) % 2 != 0):
  11.                     list1[num] = '8'
  12.             new = new + list1[num]
  13.         print(new)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-29 21:42:24 | 显示全部楼层
疾风怪盗 发表于 2020-9-29 18:57
你只要把奇数替换成8?那你写的也太复杂了吧,下面这样就行了

换完八,还要比大小,再输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-29 21:45:39 | 显示全部楼层
本帖最后由 VanessaXD 于 2020-9-29 21:51 编辑
疾风怪盗 发表于 2020-9-29 18:57
你只要把奇数替换成8?那你写的也太复杂了吧,下面这样就行了


替换成8,之后还要比大小,就是先输入几个数,直到x停下,奇数换成8,再按小到大排列输出,输入几个数,输出也是这么多个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 22:17:00 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-9-29 22:18 编辑
VanessaXD 发表于 2020-9-29 21:45
替换成8,之后还要比大小,就是先输入几个数,直到x停下,奇数换成8,再按小到大排列输出,输入几个数 ...


这样?
  1. def replace_num(num):
  2.     for temp in num:
  3.         if (temp.isdigit() == True) and (int(temp) % 2 != 0):
  4.             num=num.replace(temp, '8')
  5.     return num


  6. list=[]
  7. while True:
  8.     a = input('请输入数字:')
  9.     if a == 'x':
  10.         print('退出。')
  11.         break
  12.     else:
  13.         list.append(replace_num(a))

  14. list.sort(key=lambda x:eval(x),reverse=False)
  15. for a in list:
  16.     print(a)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-29 22:24:20 | 显示全部楼层

我试了这串代码,它还是输入一个输出一个诶,题目要求输入完4,5个数,直到输入x才停止,紧接着从小到大排。比如
(输入)100.1
100.2
100.3
100.4
x
(输出)800.2
800.4
800.8
800.8
然后比较尴尬的一点因为是初学题目不让用def,append,sort这类代码。。。只能不停的for循环,while循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 22:33:02 | 显示全部楼层
本帖最后由 疾风怪盗 于 2020-9-29 22:36 编辑
VanessaXD 发表于 2020-9-29 22:24
我试了这串代码,它还是输入一个输出一个诶,题目要求输入完4,5个数,直到输入x才停止,紧接着从小到大 ...


太麻烦了吧。。。。。。。
replace能用吧?还有哪些不能用的?
你这题目到底是什么?如果不能一个一个输入,那你写的一开始就不对啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-29 22:46:51 | 显示全部楼层
疾风怪盗 发表于 2020-9-29 22:33
太麻烦了吧。。。。。。。
replace能用吧?还有哪些不能用的?
你这题目到底是什么?如果 ...


那可以请教一下该怎么写吗?replace也不能用除了最基础的代码好像都不可以用不可以把input的东西放进一个列表里吗?题目是我新上传在在1楼的图片,我没有办法在回复发图片。我担心解释不清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 23:33:42 | 显示全部楼层
VanessaXD 发表于 2020-9-29 22:46
那可以请教一下该怎么写吗?replace也不能用除了最基础的代码好像都不可以用不可 ...

你这题意是怎么理解的?
没说要input在一行上啊
而且列表操作不是也可以用的么?
列表常用操作:
https://blog.csdn.net/hesongzefairy/article/details/104209124

怎么就append、sort不能用呢。。。。。

你这是学到哪里有的这题目?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 23:38:43 | 显示全部楼层    本楼为最佳答案   
不用replace就换一种,不用sort就用冒泡排序,和你写的也一样,但是你说不用append,那怎么添加进列表,那能不能用split呢?
看你这题,其实我7楼回复的就符合题意,要复杂点下面这样也可以
  1. list1 = []
  2. while True:
  3.     a = input('请输入浮点:')
  4.     if a == 'x':
  5.         print('退出。')
  6.         break
  7.     else:
  8.         new = ''
  9.         for temp in list(a):
  10.             if (temp != '.') and (int(temp) % 2 != 0):
  11.                 temp = '8'
  12.             new = new + temp
  13.         list1.append(float(new))

  14. for i in range(len(list1)):
  15.     for j in range(0, len(list1) - i - 1):
  16.         if list1[j] > list1[j + 1]:
  17.             list1[j], list1[j + 1] = list1[j + 1], list1[j]

  18. for i in list1:
  19.     print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-30 00:10:23 | 显示全部楼层
疾风怪盗 发表于 2020-9-29 23:38
不用replace就换一种,不用sort就用冒泡排序,和你写的也一样,但是你说不用append,那怎么添加进列表,那 ...

用insert代替append?就是比较麻烦。。
成了,就是这样!感谢大神!这是大学作业,快到deadline了,实在不知道该怎么改,只能发上来问问。
真的真的非常感谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-7 15:54:34 | 显示全部楼层

回帖奖励 +1 鱼币

学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表