天天看点

字符串作业

  1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)

    例如: 输入**'abcd1234 ’ ** 输出**‘bd24’**

    str1=input('请输入字符串:')
    for i in range(1,len(str1),2):
        print(str1[i])
               
  2. 输入用户名,判断用户名是否合法(用户名长度6~10位)
    user=input('请输入用户名:')
    if 6<=len(user)<=10:
        print(user,'输入合法')
    else:
        print('输入不合法')
               
  3. 输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)

    例如: ** ‘abc’ ** — 合法 ** ‘123’ ** — 合法 **‘abc123a’ ** — 合法

    # 思路:将输入的字符串拆分为数字和字母,如果新的字符串长度和原来的相等则是合法用户名,如果长度不等,则不是
    user=input('请输入用户名:')
    str1=user.upper()
    strs=''
    for i in str1:
        if '0'<=i<='9'or 'A'<=i<='Z':
            strs+=i
    if len(strs)==len(user):
        print('合法')
    else:
        print('不合法')
    
    
               
  4. 输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)

    例如: ‘abc’ — 不合法 ‘123’ — 不合法 ‘abc123’ — 不合法 ‘Abc123ahs’ — 合法

    # 思路1:将输入的字符串拆分为数字和字母,如果新的字符串长度和原来的相等则是合法用户名,如果长度不等,则不是
    str1 = input('请输入用户名:')
    str2 = str1.upper()  # 将str1所有的字母转换成大写
    strs = ''  # 定义一个变量保存大写字母
    strs2 = ''  # 定义一个变量保存数字
    
    if 'A' <= str1[0] <= 'Z':  # 判断首字母是否大写
        for i in str2:
            if 'A' <= i <= 'Z':
                strs += i  # 筛选str2的大写字母存放到strs里面
        for j in str2:
            if '0' <= j <= '9':
                strs2 += j  # 将元素中的数字全部放到strs2里面
    
        if len(strs) != 0 and len(strs2) != 0:  # 判断存放的大写字母和数字数量是否为零
            strs3 = strs + strs2  # 将两个字母和数字放入strs3
            if len(strs3) == len(str1):  # 判断strs3和str1的长度是否相等
                print('合法')
            else:
                print('不合法')
        else:
            print('不合法')
    else:
        print('不合法')
    
               
# 方法二
name = input('请输入用户名:')
if 'A' <= name[0] <= 'Z':
    have_num = False
    for c in name[1:]:
        if not ('a' <= c <= 'z' or 'A' <=c<= 'Z' or '0' <= c <= '9'):
            print('不合法')
            break
        else:
            if '0' <= c <= '9':
                have_num = True
    else:
        if have_num == True:
            print('合法')
        else:
            print('不合法')
else:
    print('不合法')
           
  1. 输入一个字符串,将字符串中所有的数字字符取出来产生一个新的字符串

    例如:输入**‘abc1shj23kls99+2kkk’** 输出:'123992’

    zfc=input('请输入字符串:')
    zfc_num=''
    for num in zfc:
        if '0'<=num<='9':
            zfc_num+=num
    print(zfc_num)
               
  2. 输入一个字符串,将字符串中所有的小写字母变成对应的大写字母输出 (用upper方法和自己写算法两种方式实现)

    例如: 输入**‘a2h2klm12+’ ** 输出 'A2H2KLM12+'

    zm =input('请输入字符串:')
    # 方法一
    zm_dx = ''
    print(ord('z'))
    for xx in zm:
        if 97 <= ord(xx) <= 122:
            xx1=ord(xx) - 32
            zm_dx+=chr(xx1)
        else:
            zm_dx+=xx
    print(zm_dx)
    # 方法二 
    print(zm.upper())
               
  3. 输入一个小于1000的数字,产生对应的学号

    例如: 输入**‘23’,输出’py1901023’** 输入**‘9’, 输出’py1901009’** 输入**‘123’,输出’py1901123’**

    # 方法一
    num = 'py1901'
    nums = ''
    xh = input('请输入学号:')
    if int(xh) < 10:
        nums = num + '00' + xh
        print(nums)
    elif int(xh) < 100:
        nums = num + '0' + xh
        print(nums)
    elif int(xh) < 1000:
        nums = num + xh 
        print(nums)
    else:
        print('输入有误')
    # 方法二   
    num = 'py1901'
    xh = input('请输入100以内的学号:')
    print(f'{num}{xh.zfill(3)}')
    
               
  4. 输入一个字符串,统计字符串中非数字字母的字符的个数

    例如: 输入**‘anc2+93-sj胡说’** 输出:4 输入**’===’** 输出:3

    strs1=input('请输入字符串:')
    strs2=strs1.lower()
    strs3=''
    for i in strs2:
        if 'a'<=i<='z'or '0'<=i<='9':
            strs3+=i
    
    nums=len(strs1)-len(strs3)
    print(nums)
               
  5. 输入字符串,将字符串的开头和结尾变成’+’,产生一个新的字符串

    例如: 输入字符串**‘abc123’, 输出’+bc12+’**

    # 方法一
    str1=input('请输入字符串:')
    str2='+'
    str3=''
    for i in range(1,len(str1)-1):
        str3+=str1[i]
    print(str3)
    print(f'{str2}{str3}{str2}')
    # 方法二
    str1='123456'
    str2='+'
    new_str=str1.replace(str1[0],str2).replace(str1[-1],str2) # 将下标为0和-1的字符替换成+
    print(new_str)  # +2345+
    
               

···

# 方法3
str1='abc123'
new_str=f'+{str1[1:-1]}+'
print(new_str)
           
  1. 输入字符串,获取字符串的中间字符

例如: 输入**‘abc1234’** 输出:‘1’ 输入**‘abc123’** 输出**‘c1’**

str1=input('请输入字符串:')
b=len(str1)//2
if len(str1)&1:
    print(f'中间字符为{str1[b]}')
else:
    print(f'中间字符为:{str1[b-1]}和{str1[b]}')
           
  1. 写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)

例如: 字符串1为:how are you? Im fine, Thank you! , 字符串2为:you, 打印8

str1='how are you? Imfine, Thankyou!'
str2='you'
index=str1.find(str2, 0, len(str1))
print(f'出现的位置为{index}')
           
  1. 获取两个字符串中公共的字符

例如: 字符串1为:abc123, 字符串2为: huak3 , 打印:公共字符有:a3

str1=' abc12311111'
str2='huak3222'
new_strs=' '.join(set(str1)&set(str2))
print(f'公共字符有: {new_strs}')