python字符串替换问题
本帖最后由 VanessaXD 于 2020-9-29 22:41 编辑请教一下各位大神,我这串代码有什么问题应该改正?为什么在将输入的浮点数中的奇数替换成8的时候,一部分可以替换,一部分不行?比如说100.5可以被替换成800.8,而100.3,或者100.7,只能被替换成800.3和800.7?
numlist=[]
list1=[]
new=''
while True:
a=input('')
if a=='x':
break
else:
numlist.insert(0,a)
for i in range(len(numlist)):
for j in range(len(numlist)):
while True:
if numlist=='1' or numlist=='3' or numlist=='5' or numlist=='7' or numlist=='9':
new=str(numlist)[:j]+'8'+str(numlist)
print(new)
del numlist
numlist.insert(0,new)
continue
else:
break
print(numlist)
n=len(numlist)
for z in range (n):
c=0
for l in range (0,n-1-z):
if numlist > numlist:
numlist,numlist = numlist,numlist
c+=1
if 0==c:
break
for u in numlist:
print(u)
题目要求 你贴的代码,就缩进有点问题,其他运行正常啊,然后不知道你是不是要保留输入的内容还是不保留,每次都输出一个的话就把前三句放到循环里重置为空,要保留的话就放循环外
while True:
numlist = []
list1 = []
new = ''
a=input('请输入浮点数')
if a=='x':
break
else:
numlist.insert(0,a)
for i in range(len(numlist)):
for j in range(len(numlist)):
while True:
if numlist=='1' or numlist=='3' or numlist=='5' or numlist=='7' or numlist=='9':
new=str(numlist)[:j]+'8'+str(numlist)
#print(new)
del numlist
numlist.insert(0,new)
continue
else:
break
#print(numlist)
n=len(numlist)
for z in range (n):
c=0
for l in range (0,n-1-z):
if numlist > numlist:
numlist,numlist = numlist,numlist
c+=1
if 0==c:
break
for u in numlist:
print(u)
你只要把奇数替换成8?那你写的也太复杂了吧,下面这样就行了
while True:
new = ''
a = input('请输入数字:')
if a == 'x':
print('退出。')
break
else:
list1 = list(a)
for num in range(len(list1)):
if (list1.isdigit() == True) and (int(list1) % 2 != 0):
list1 = '8'
new = new + list1
print(new)
疾风怪盗 发表于 2020-9-29 18:57
你只要把奇数替换成8?那你写的也太复杂了吧,下面这样就行了
换完八,还要比大小,再输出 本帖最后由 VanessaXD 于 2020-9-29 21:51 编辑
疾风怪盗 发表于 2020-9-29 18:57
你只要把奇数替换成8?那你写的也太复杂了吧,下面这样就行了
替换成8,之后还要比大小,就是先输入几个数,直到x停下,奇数换成8,再按小到大排列输出,输入几个数,输出也是这么多个数 本帖最后由 疾风怪盗 于 2020-9-29 22:18 编辑
VanessaXD 发表于 2020-9-29 21:45
替换成8,之后还要比大小,就是先输入几个数,直到x停下,奇数换成8,再按小到大排列输出,输入几个数 ...
这样?
def replace_num(num):
for temp in num:
if (temp.isdigit() == True) and (int(temp) % 2 != 0):
num=num.replace(temp, '8')
return num
list=[]
while True:
a = input('请输入数字:')
if a == 'x':
print('退出。')
break
else:
list.append(replace_num(a))
list.sort(key=lambda x:eval(x),reverse=False)
for a in list:
print(a) 疾风怪盗 发表于 2020-9-29 22:17
这样?
我试了这串代码,它还是输入一个输出一个诶,题目要求输入完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循环 本帖最后由 疾风怪盗 于 2020-9-29 22:36 编辑
VanessaXD 发表于 2020-9-29 22:24
我试了这串代码,它还是输入一个输出一个诶,题目要求输入完4,5个数,直到输入x才停止,紧接着从小到大 ...
{:10_312:}太麻烦了吧。。。。。。。
replace能用吧?还有哪些不能用的?
你这题目到底是什么?如果不能一个一个输入,那你写的一开始就不对啊 疾风怪盗 发表于 2020-9-29 22:33
太麻烦了吧。。。。。。。
replace能用吧?还有哪些不能用的?
你这题目到底是什么?如果 ...
那可以请教一下该怎么写吗?replace也不能用{:10_266:}除了最基础的代码好像都不可以用{:10_266:}不可以把input的东西放进一个列表里吗?题目是我新上传在在1楼的图片,我没有办法在回复发图片。我担心解释不清楚 VanessaXD 发表于 2020-9-29 22:46
那可以请教一下该怎么写吗?replace也不能用除了最基础的代码好像都不可以用不可 ...
你这题意是怎么理解的?
没说要input在一行上啊
而且列表操作不是也可以用的么?
列表常用操作:
https://blog.csdn.net/hesongzefairy/article/details/104209124
怎么就append、sort不能用呢。。。。。
你这是学到哪里有的这题目? 不用replace就换一种,不用sort就用冒泡排序,和你写的也一样,但是你说不用append,那怎么添加进列表,那能不能用split呢?
看你这题,其实我7楼回复的就符合题意,要复杂点下面这样也可以
list1 = []
while True:
a = input('请输入浮点:')
if a == 'x':
print('退出。')
break
else:
new = ''
for temp in list(a):
if (temp != '.') and (int(temp) % 2 != 0):
temp = '8'
new = new + temp
list1.append(float(new))
for i in range(len(list1)):
for j in range(0, len(list1) - i - 1):
if list1 > list1:
list1, list1 = list1, list1
for i in list1:
print(i) 疾风怪盗 发表于 2020-9-29 23:38
不用replace就换一种,不用sort就用冒泡排序,和你写的也一样,但是你说不用append,那怎么添加进列表,那 ...
用insert代替append?就是比较麻烦。。
成了,就是这样!感谢大神!这是大学作业,快到deadline了,实在不知道该怎么改,只能发上来问问。
真的真的非常感谢!!! 学习
页:
[1]