美文网首页
习题15-17

习题15-17

作者: 小董不太懂 | 来源:发表于2019-08-19 12:53 被阅读0次
    • 利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
      方法一
    '''
    利用条件运算符的嵌套来完成此题:
    学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
    '''
    score = int(input('请输入你的分数:'))
    print('A'if score>=90 else 'B' if score>59 else 'c')
    

    输出结果:

    D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题15.py
    请输入你的分数:90
    A
    
    Process finished with exit code 0
    

    这个方法一,我们还可以再改进一下:

    import random
    
    while 1:
        score = int(input('请输入你的分数:'))
        print('A'if score>=90 else 'B' if score>59 else 'c')
        for i in range(random.randint(0,10)):
            break
    

    方法二

    while 1:
        score = int(input('请输入你的分数'))
        mark = [90,60,0]
        result = ['A','B','C']
        for i in range(3):
            if score >= mark[i]:
                print('{} is {}'.format(score,result[i]))
                break
    

    • 输出指定格式的日期。
      程序分析:使用 datetime 模块。
      方法一
    import time
    print('当前时间戳:',time.time())
    # 时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。
    print('获取当前本地时间:',time.localtime())
    print('格式化日期:',time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
    print('格式化日期:',time.strftime('%Y/%m/%d %H:%M:%S',time.localtime()))
    

    输出结果:

    D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题16.py
    当前时间戳: 1566176620.0451167
    获取当前本地时间: time.struct_time(tm_year=2019, tm_mon=8, tm_mday=19, tm_hour=9, tm_min=3, tm_sec=40, tm_wday=0, tm_yday=231, tm_isdst=0)
    格式化日期: 2019-08-19 09:03:40
    格式化日期: 2019/08/19 09:03:40
    
    Process finished with exit code 0
    

    方法二

    import datetime
    print('当前年月日:',datetime.date.today())
    print('格式化时间:',datetime.date.today().strftime('%Y/%m/%d'))
    print(datetime.date(2019,8,23))
    

    输出结果:

    D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题16.py
    当前年月日: 2019-08-19
    格式化时间: 2019/08/19
    2019-08-23
    
    Process finished with exit code 0
    

    • 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
      方法一
    s = input('请输入待测字符串:')
    dic = {'litter':0,'space':0,'integer':0,'else':0}
    for i in s:
        if i>='a' and i<='z'or i>='A' and i<='Z':
            dic['litter'] += 1
        elif i in '0123456789':
            dic['integer'] += 1
        elif i is ' ':
            dic['space'] += 1
        else:
            dic['else'] += 1
    print(dic)
    for key,value in dic.items():
        print('{}={}'.format(key,value))
    

    输出结果:

    请输入待测字符串:12eee???====
    {'litter': 3, 'space': 0, 'integer': 2, 'else': 7}
    litter=3
    space=0
    integer=2
    else=7
    

    dict.items()返回可遍历的(键值)元组数组
    具体参考:https://www.runoob.com/python/att-dictionary-items.html

    方法二

    alphaNum = 0
    numNum = 0
    spaNum = 0
    elseNum = 0
    s = input('请输入待测字符串:')
    for i in s:
        if i.isalpha():
            alphaNum += 1
        elif i.isalnum():
            numNum += 1
        elif i.isspace():
            spaNum += 1
        else:
            elseNum += 1
    print('字母=',alphaNum)
    print('数字=',numNum)
    print('空格=',spaNum)
    print('其他=',elseNum)
    

    输出如下:

    D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题17.py
    请输入待测字符串:uuuu778   =====--
    字母= 4
    数字= 3
    空格= 3
    其他= 7
    
    Process finished with exit code 0
    

    方法三

    letter = []
    number = []
    space = []
    other = []
    s = input('请输入待测字符串:')
    for i in s:
        if i.isalpha():
            letter.append(i)
        elif i.isalnum():
            number.append(i)
        elif i.isspace():
            space.append(i)
        else:
            other.append(i)
    print('字母=',len(letter))
    print('数字=',len(number))
    print('空格=',len(space))
    print('其他=',len(other))
    

    输出如下:

    请输入待测字符串:www 197ww com ...,,,
    字母= 8
    数字= 3
    空格= 3
    其他= 6
    
    Process finished with exit code 0
    

    这个和方法二大同小异。
    方法四

    import re
    
    charNum = 0
    digNum = 0
    spaceNum = 0
    otherNum = 0
    s = input('请输入待测字符串')
    letter = re.findall(r'[a-zA-Z]',s)
    number = re.findall(r'[0-9]',s)
    space = re.findall(r' ',s)
    chinese = re.findall(r'[\u4E00-\u9FFF]',s)#汉字的Unicode编码范围
    other = len(s) - len(letter) - len(number) - len(space) - len(chinese)
    print('字母={},数字={},空格={},中文={},其他={}'.format(len(letter),len(number),
                                                 len(space),len(chinese),other))
    

    输出如下:

    D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题17.py
    请输入待测字符串我是谁 whoareyou 123 ————。。。。,,,
    字母=9,数字=3,空格=3,中文=3,其他=11
    
    Process finished with exit code 0
    

    方法五

    import re
    
    charNum = 0
    digNum = 0
    spaceNum = 0
    otherNum = 0
    s = input('请输入待测字符串')
    for i in range(len(s)):
        if re.match(r'[a-zA-Z]',s[i]):
            charNum += 1
        elif re.match('\d',s[i]):
            digNum += 1
        elif re.match('\s',s[i]):
            spaceNum += 1
        else:
            otherNum += 1
    print('字母={},数字={},空格={},其他={}'.format(charNum,digNum,spaceNum,otherNum))
    

    输出结果:

    D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题17.py
    请输入待测字符串woshi  9998<<<<.....
    字母=5,数字=4,空格=2,其他=9
    
    Process finished with exit code 0
    
    

    re库用法参考:https://www.cnblogs.com/python-xkj/p/9231624.html

    相关文章

      网友评论

          本文标题:习题15-17

          本文链接:https://www.haomeiwen.com/subject/dwnrsctx.html