2018.6.21 学习日志(2)-----打字练习成绩评定

#打字练习成绩评定
'''
假设origin为原始内容,userInput为用户练习时输入的内容,
要求用户输入的长度不能大于原始内容的长度,如果对应位置的
字符一致认为正确,否则判定输入错误。最后成绩为:
正确的字符数量/原始字符串长度,按百分制输出,要求保留2位小数
'''
#先设置一段字符串
def judge():
    origin="Python的创始人为Guido van Rossum"    #练习的内容
    print("用户练习的内容:")
    print(origin)
    while True:         #进行长度的检测,如果长度不符合标准那么就重新输入
        try:
            useInput = input("请输入:")
            assert len(useInput)==len(origin)    # assert断言:可以理解为“这里一定是成立的”,如果表达式不成立(False),则抛出异常。
        except:
            print("输入的长度有误,请再次输入")
        else:
            count=0 #对正确的进行计数
            for i in range(len(origin)):        #对每一个字符进行比较
                if useInput[i]==origin[i]:
                    count=count+1
                else:
                    continue
            result=round(count/len(origin)*100,2)
            print(result)
            print("正确率:{}%".format(result))
            break #跳出while这循环,如果不跳出从新到line14进行程序
judge()

输出:

用户练习的内容:
Python的创始人为Guido van Rossum
请输入:Python的3始人为G3ido van Rossum
92.59
正确率:92.59%

这一段是我自己思考的结果
接下来放上参考答案看看有哪些地方可以学习

def Rate(origin,userInput):
    if not (isinstance(origin,str) and isinstance(userInput,str)):  #两个必须为字符串
        return print("The two parameters must be strings")
    if  len(origin)!=len(userInput):             #判断长度
        return print("Sorry.I suppose the second parameter string is not true")
    #精确匹配字符个数
    count=0#计数
    for oc ,uc in zip(origin,userInput):#内置函数zip()
        if oc==uc:
            count=count+1
    result=count / len(origin)
    return print("{}%".format(round(result*100,2)))#函数round()

origin="Python的创始人为Guido van Rossum"
userInput=input("请输入:")
Rate(origin,userInput)

这里几个内置函数需要注意

1.isinstance()
isinstance() 函数来判断一个对象是否是一个已知的类型


>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list))    # 是元组中的一个返回 True
True

2.zip()
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> zipped = zip(a,b)
>>> zipped
<zip object at 0x02B01B12> #返回的是一个对象
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)] #使用list()函数转换为列表
>>> zipped = zip(a,b)
>>> list(zip(*zipped)) #解压也使用list进行转换
[(1, 2, 3), (4, 5, 6)]   #(1,2,3)是一个元组

3.round()
round() 方法返回浮点数x的四舍五入值。
round(x,n)

x -- 数字表达式。
n -- 表示从小数点位数,其中 x 需要四舍五入,默认值为 0。
>>>round(70.23456)
70
>>>round(56.659,1)
56.7
>>>round(80.264, 2)
80.26

猜你喜欢

转载自blog.csdn.net/yk_0311/article/details/80764993