字符串和字典作业

该文展示了几个使用Python进行字符串处理的实例,包括提取奇数位字符、检查用户名合法性、筛选大写字母、添加特定符号以及查找子串位置。同时,文中还涉及了用户验证的条件,如长度限制、字符组成和首字母要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

    str1 = input("")
    new_str = ''
    for n in range(1, len(str1), 2):
        new_str += str1[n]
    print(new_str)
    
  2. 输入用户名,判断用户名是否合法(用户名长度6~10位)

    username = input('')
    if 5 < len(username) < 11:
        print('合法')
    else:
        print('不合法')
    
  3. 输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)

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

    username = input("")
    n = 0
    for x in username:
        if '0' <= x <= '9' or 'a' <= x <= 'z' or 'A' <= x <= 'Z':
            n += 1
            if n == len(username):
                print('合法')
        else:
            print('不合法')
    
  4. 输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)

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

    username = input("")  # 获取输入用户名
    n = 0  # 数字个数默认值为0
    z = 0  # 字母个数默认值为0
    if 'A' <= username[0] <= 'Z':  # 判断首字母是否大写
        for x in username:  # 获取字符串所有元素怒
            if '0' <= x <= '9':  # 判断元素类型是否为数字
                n += 1  # 元素为数字,数字n个数加1
            if 'a' <= x <= 'z' or 'A' <= x <= 'Z':  # 判断元素类型是否为字母
                z += 1  # 元素类型为字母,字母个数加1
    count = n + z  # 求字母和数字个数的和
    if n > 0 and z > 0 and count == len(username):  # 如果和长度相等,就合法
        print('合法')
    else:
        print('不合法')
    
  5. 输入一个字符串,将字符串中所有的大写字母取出来产生一个新的字符串

    例如:输入**‘abFc1shj2A3klBs99+2kDkk’** 输出:‘FABD’

    str1 = input('')
    new_str = ''
    for x in str1:
        if 'A' <= x <= 'Z':
            new_str += x
    print(new_str)
    
  6. 输入字符串,将字符串的开头和结尾变成’+',产生一个新的字符串

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

    str1 = input('')
    str2 = '+' + str1 + '+'
    print(str2)
    
  7. 输入字符串,获取字符串的中间字符

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

    str1 = input('')
    str2 = '+'
    for x in range(1, len(str1)-1):
        str2 += str1[x]
    str2 += '+'
    print(str2)
    
  8. (难)写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)

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

    str1 = 'how are  you? Im fine, Thank you!'
    str2 = 'you'
    n = 1
    for x in range(len(str1)):  # 获取字符串1下表对应的元素
        if str2[0] == str1[x]:  # 将字符串2中的第一个元素和字符串1的元素进行比较
            count = x  # 在第count个数的时候str2的第一个元素与str1的第x个元素相等
            if str2[n] == str1[x + n]:  # 比较后一位的元素是否相等
                n += 1
                if n == len(str2):  # 全部相等输出count
                    break
                print(x)
    
  9. 获取两个字符串中公共的字符

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

    str1 = 'abcaaa123'
    str2 = 'huak3'
    new_str = ''
    if len(str2) > len(str1):
        for x in str1:
            if x in str2:
                new_str += x
        print(new_str)
    else:
        for x in str2:
            if x in str1:
                new_str += x
        print(new_str)
    
  10. 定义一个变量保存一个学生的信息,学生信心中包括:姓名、年龄、成绩(单科)、电话、性别

    stu_infor = {
        'name':'',
        'age':'',
        'score':'',
        'tel':'',
        'sex':''
    }
    
  11. 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )

    stu_infor = [
        {'name': 'tony', 'age': 18, 'score': 78, 'tel': '13215235645', 'sex': '男'},
        {'name': 'jony', 'age': 17, 'score': 58, 'tel': '13254385645', 'sex': '女'},
        {'name': 'marrny', 'age': 21, 'score': 96, 'tel': '14515235648', 'sex': '男'},
        {'name': 'tsadsy', 'age': 22, 'score': 75, 'tel': '13245435645', 'sex': '不明'},
        {'name': 'tonsad', 'age': 24, 'score': 48, 'tel': '13214535645', 'sex': '女'},
        {'name': 'toadxy', 'age': 18, 'score': 59, 'tel': '1543235648', 'sex': '男'}
    ]
    
    1. 统计不及格学生的个数

      n = 0
      for info in range(len(stu_infor)):
          if stu_infor[info]['score'] < 60:
              n += 1
      print(n)
      
    2. 打印不及格未成年学生的名字和对应的成绩

      for info in range(len(stu_infor)):
          if stu_infor[info]['score'] < 60 and stu_infor[info]['age'] < 18:
              print(stu_infor[info]['name'], stu_infor[info]['score'])
      
    3. 求所有男生的平均年龄

      for i in stu_info:
      	i.stedeffault('sex':None)
      sum_age = 0
      n = 0
      for info in stu_infor:
      	if info['sex']=='男'
      		n += 1
          	sum_age += info['age']
      print(sum_age /n))
      
    4. 打印手机尾号是8的学生的名字

      for info in stu_infor:
          if info['tel'][-1] == '8':
              print(info['name']
      
    5. 打印最高分和对应的学生的名字

      scores = []
      for info in stu_infor:
          scores.append(info['score'])
      max_score = max(scores)
      for info1 in range(len(stu_infor)):
          if stu_infor[info1]['score'] == 96:
              print(stu_infor[info1]['score'], stu_infor[info1]['name'])
      
    6. 删除性别不明的所有学生

      nom_stu = []
      for info1 in range(len(stu_infor)):
          if stu_infor[info1]['sex'] != '不明':
              nom_stu.append(stu_infor[info1])
      print(nom_stu)
      
    7. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

       stu_score = []
       for stu in stu_infor:
           stu_score.append(stu['score'])
       new_s = sorted(stu_score, reverse=True)
       new_stuinfo = []
       for score in new_s:
           for stu in stu_infor:
               if stu['score'] == score:
                   new_stuinfo.append(stu)
       print(new_stuinfo)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值