day5字符串和字典作业(1)

该文展示了多个Python代码示例,涉及字符串中奇数位置字符提取、用户名合法性检查(长度、字符类型、首字母要求)以及字符串中特定字符的查找、组合和提取等操作。同时,文章还包含了对含有学生信息字典列表的处理,如统计不及格学生、求平均年龄、筛选特定条件的学生等。
摘要由CSDN通过智能技术生成
  1. 输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)

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

    str = input("请输入字符串:")
    for i in range(1,len(str),2):
        print(str[i])
    
  2. 输入用户名,判断用户名是否合法(用户名长度6~10位)

    user_name = input("请输入用户名:")
    if 6<=len(user_name)<=10:
        print("合法用户名")
    else:
        print("用户名非法,用户名应为6~10个字符")
    
  3. 输入用户名,判断用户名是否合法(用户名中只能由数字和字母组成)

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

    use_name = input('请输入用户名:')
    T = 0
    for i in use_name:
        if 65 <= ord(i) <=90 or 97 <= ord(i) <=122 or 48 <= ord(i) <= 57:
            continue
        else:
            print('用户名非法!用户名中只能由数字和字母组成!')
            T = 1
            break
    if T == 0:
        print('合法用户名')
    
  4. 输入用户名,判断用户名是否合法(用户名必须包含且只能包含数字和字母,并且第一个字符必须是大写字母)

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

    use_name = input('请输入用户名:')
    T, nu, r , Tw, og = 0, 0, 0, 0, 0
    for i in use_name:
        if r == 0:
            r += 1
            if 65 <= ord(i) <=90:
                nu += 1
                continue
            else:
                print("用户名非法!第一个字符必须是大写字母")
                og = 1
                break
        elif 65 <= ord(i) <=90 or 97 <= ord(i) <=122 or 48 <= ord(i) <= 57:
            if 65 <= ord(i) <=90 or 97 <= ord(i) <=122:
                nu += 1
            elif 48 <= ord(i) <= 57:
                Tw += 1
    
            continue
        else:
            print('用户名非法!用户名中只能由数字和字母组成!')
            T = 1
            break
    if og !=1:
        if nu == 0 or Tw == 0:
            print("用户名非法!用户名必须同时包含数字和字母")
        elif T == 0:
            print('合法用户名')
    
  5. 输入一个字符串,将字符串中所有的大写字母取出来产生一个新的字符串

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

    str = input('请输入一个字符串:')
    str1 = []
    num = 0
    for i in str:
        if 65 <= ord(i) <=90:
            str1.append(i)
            num += 1
    if num != 0:
        new_str = ''.join(str1)
        print(new_str)
    else:
        print('字符串中没有大写字母!')
    
  6. 输入字符串,将字符串的开头和结尾变成’+',产生一个新的字符串

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

    str = input('请输入字符串:')
    str1 = list(str)
    str1.insert(1,'+')
    del str1[len(str1)-1]
    str1.append('+')
    del str1[0]
    new_str = ''.join(str1)
    print(new_str)
    
  7. 输入字符串,获取字符串的中间字符

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

    str = input('请输入字符串:')
    str2 = list(str)
    str3 = []
    if len(str2) % 2 ==0:
        str3.append(str2[len(str2)//2 -1])
        str3.append(str2[len(str2) // 2])
    else:
        str3.append(str2[len(str2)//2])
    print(''.join(str3))
    
  8. (难)写程序实现字符串函数find/index的功能(获取字符串1中字符串2第一次出现的位置)

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

    str1 = 'how are you? Im fine, Thank you!'
    str = input('请输入要查找的字符串')
    
    ls = len(str)
    n = 0
    # print(len(str1),len(str))
    for i in range(0,len(str1)-(len(str)-1)):
        if str1[n:n+ls] == str:
            print(n)
            break
        n += 1
    
  9. 获取两个字符串中公共的字符

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

    str1 = 'abcaaa123'
    str1 = list(str1)
    str2 = 'huak3'
    str2 = list(str2)
    str3 = []
    
    for i in str1:
        if i in str2:
            str3.append(i)
            n = 0
            for j in str2:
                if j == i:
                    del str2[n]
                n += 1
    print(''.join(str3))
    
  10. 定义一个变量保存一个学生的信息,学生信心中包括:姓名、年龄、成绩(单科)、电话、性别

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

    1. 统计不及格学生的个数
    2. 打印不及格未成年学生的名字和对应的成绩
    3. 求所有男生的平均年龄
    4. 打印手机尾号是8的学生的名字
    5. 打印最高分和对应的学生的名字
    6. 删除性别不明的所有学生
    7. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
student = [
    {'name': 'stu1', 'age': 18, 'math_grade': 96, 'tel': '10088', 'gender': '女'},
    {'name': 'stu2', 'age': 17, 'math_grade': 15, 'tel': '10078', 'gender': '男'},
    {'name': 'stu3', 'age': 18, 'math_grade': 97, 'tel': '10166', 'gender': '不明'},
    {'name': 'stu4', 'age': 21, 'math_grade': 60, 'tel': '10088', 'gender': '女'},
    {'name': 'stu5', 'age': 22, 'math_grade': 59, 'tel': '10016', 'gender': '男'},
    {'name': 'stu6', 'age': 32, 'math_grade': 99, 'tel': '10081', 'gender': '女'}
]
# 1. 统计不及格学生的个数
num = 0
for i in student:
    if i['math_grade'] < 60:
        num += 1
print('不及格学生的个数',num)
# 2. 打印不及格未成年学生的名字和对应的成绩
print('-----------------')
for i in student:
    if i['math_grade'] < 60 and i['age'] < 18:
        print(i['name'],i['age'])
# 3. 求所有男生的平均年龄
print('-------------')
ad = 0
aw = 0
for i in student:
    if i['gender'] == '男':
        ad += i['age']
        aw += 1
if ad != 0:
    print(ad/aw)
else:
    print('该班没有男性')
# 4. 打印手机尾号是8的学生的名字
print('--------------')
for i in student:
    if int(i['tel']) % 10 == 8:
        print(i['name'])
# 5. 打印最高分和对应的学生的名字
print('-----------')
max = 0
le , n = 0 , 0
for i in student:
    if i['math_grade'] > max:
        max = i['math_grade']
        n = le
    le += 1

print(max,student[n]['name'])
# 6. 删除性别不明的所有学生
print('-------------')
w = 0
for i in student:
    if i['gender'] == '不明':
        del student[w]
    w += 1
print(student)
# 7. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
print('----------------')
lst = []
student2 = []
for i in student:
    lst.append(i['math_grade'])
lst = sorted(lst)
# print(lst)
for i in lst:
    for x in student:
        if i == x['math_grade']:
            student2.append(x)
print(student2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值