shenzeyu1209 发表于 2023-2-12 21:36:28

31讲最后一题

最后append函数不是是添加在末尾的么,为什么最后输出出来是穿插的额
1. 请编写一个程序,将用户输入的字符串重新格式化,使得字母和数字相互分隔(即一个字母一个数字相互间隔)
s = input("请输入测试字符串:")
   
str09 = []
strAZ = []
   
# 将数字和字母进行归类存放
for each in s:
    if each.isdecimal():
      str09.append(each)
    else:
      strAZ.append(each)
   
len09 = len(str09)
lenAZ = len(strAZ)
   
# 如果两个容器的元素个数相差 1 个以上,则不满足重新格式化的条件
if abs(len09 - lenAZ) > 1:
    print("字符串中数字和字母的数量不满足重新格式化的条件。")
else:
    if len09 > lenAZ:
      shorter = strAZ
      longer = str09
    else:
      shorter = str09
      longer = strAZ
   
    result = []
    for i in range(len(shorter)):
      result.append(longer)
      result.append(shorter)

isdkz 发表于 2023-2-12 21:45:38

这个结果不对吗?

请输入测试字符串:aaa111
['a', '1', 'a', '1', 'a', '1']

jackz007 发表于 2023-2-12 21:57:09

本帖最后由 jackz007 于 2023-2-12 22:05 编辑

s = input("请输入测试字符串:")
str09 , strAZ , strResult = '' , '' , ''
for x in s:
    if x . isdigit() : str09 += x
    else : strAZ += x
if(abs(len(str09) - len(strAZ))) < 2:
    if len(str09) > len(strAZ) : stra , strb = str09 , strAZ
    else : stra , strb = strAZ , str09
    for i in range(len(stra)) :
      strResult += stra
      if i < len(strb) : strResult += strb
    print(strResult)
else:
    print('测试字符串不合格!')

shenzeyu1209 发表于 2023-2-13 15:18:04

isdkz 发表于 2023-2-12 21:45
这个结果不对吗?

结果 是对的!就是 我没想明白原理{:5_100:}
页: [1]
查看完整版本: 31讲最后一题