习题15-17

2019-08-19  本文已影响0人  小董不太懂
'''
利用条件运算符的嵌套来完成此题:
学习成绩> =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

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

上一篇 下一篇

猜你喜欢

热点阅读