天天看點

字元串作業

  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}')