博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础检测:20171105
阅读量:4657 次
发布时间:2019-06-09

本文共 5144 字,大约阅读时间需要 17 分钟。

第一周的预习结束了

效果并不理想,最后的检测也是有个别同学表现还可以.最后一次检测,除了依旧不是放在一个文件里,文件也没有标注作者从而导致我没办法一一回复外,有些问题写的不好意外.基本没什么毛病,摔!

本次问题是以小故事的形式展开并串联的,并没有什么特殊的意思.本人不善言谈,更不善于搭讪.拒撩.

答案与解析

第一题,公式转换,计算误差

# 1. 门前有两棵树,其中一棵是枣树,我每天早上起来都会吃掉原三分之一又一个枣,一个星期刚好吃完,请问我一共吃了几个枣? (循环)def question_1(n=7):    from fractions import Fraction    x = 0    for day in range(n, 0, -1):        print("星期", day, "过完后剩下", x, "颗枣")        x = (x + 1) /Fraction(2,3) # 使用分数,避免因为数值精度产生误差    print("那么,第一天开始的时候就有:", x, "颗枣")

第一题演示结果

这道题的没什么难点,而且每个问题都给出了解题思路.从答题看,该题目主要有两个问题,一个是公式问题,简单来说(列一元方程,未知数转换到公式一侧.)然后没了,要是不会,我也没有办法.这可能不是适不适应我的节奏的问题,可能是适不适合编程的问题.第二,是数值精度的问题,因为问题求解中需要计算小数,而且连乘较多,不使用分数计算会导致误差在连乘过程中不断增加.

第二题,yield关键字

# 2. 另一个树也是枣树,一不小心打落了距离地面三米六一个枣,枣掉在地上,弹了起来,弹起来的距离是下落距离的1/2,,第十次弹起了多高?(用yield)def length(n):    l = 3600    while n > 0:        l = l / 2        yield l        n -= 1        # print(l)def question_2():    print(list(length(10))[9])

之前的斐波那契数列已经有过了,不会的话,就反省一下是不是自己偷懒了

第三题,屏幕输入输出

# 3. 我枣吃多了肚子疼去医院看病,护士问我名字和性别对我说,"你好,XX先生/XX女士" (人机交互)def question_3(bl_test=False, name="FontTian", sex='1'):    if bl_test:        name = input("名字?")        sex = input("性别?")    else:        pass    if sex in ['男', '1']:        sex = '先生'    else:        sex = '女士'    print("你好 ,%s%s" % (name, sex))

以前多次写过的,不会的还是反省一下自己是不是偷懒了吧.语法相对简单,到时我给的提示可能让之前没有留意前两次实例的人混淆……

第四题

我给出的是扩展的写法,使用了exec方法,实现这个

# 4. 医生给我开了药房,我把药方拿给护士小姐姐,拿药,付钱的时候小姐姐需要一个计算器(计算机,加减乘除,exit退出)# 不考虑异常# def question_4():while True:    x = input("变量1\n")    if x == "exit":        break    y = input("运算符号\n")    z = input("变量2\n")    exec("ans = " + x + y + z)    import time    time.sleep(3)    print(ans)

或者使用choice关键字也可以,这个其实才是最简单一个,因为是choice的教学例子,在各种地方也最为常见,除非没学:

def add(x, y):   return x + ydef subtract(x, y):   return x - ydef multiply(x, y):   return x * ydef divide(x, y):   return x / yprint("选择运算:")print("1、相加")print("2、相减")print("3、相乘")print("4、相除")choice = input("输入你的选择(1/2/3/4):")num1 = int(input("输入第一个数字: "))num2 = int(input("输入第二个数字: "))if choice == '1':   print(num1,"+",num2,"=", add(num1,num2))elif choice == '2':   print(num1,"-",num2,"=", subtract(num1,num2))elif choice == '3':   print(num1,"*",num2,"=", multiply(num1,num2))elif choice == '4':   print(num1,"/",num2,"=", divide(num1,num2))else:   print("非法输入")

第五题

存储文件,老问题了,之前也考过一次,算是复习

# 5. 护士小姐姐温柔又漂亮,所以我和小姐姐要了手机号,我赶紧把手机号存了起来(输入你的手机号,并存入txt文件)def question_5():    MP = input("小姑娘,你很漂亮,能留个联系方式吗?\n")  # 突然发现,原来我不会搭讪......    with open("/home/fonttian/Data/17_DS_AI/20171103_MP.txt", "w") as f:        f.write(MP)

第六题

考逻辑,双层循环解决.

# 6. 回家之后,我摆弄着我的药,我先把他们办成了一个3*4 的矩阵,又变成了4*3 的矩阵,然后又摆了回来def question_6():    print("将3*4 矩阵 转化为 4*3 矩阵")    martrix = [        [1, 2, 3, 4],        [5, 4, 6, 2],        [9, 10, 12, 15]    ]    print([[row[i] for row in martrix] for i in range(4)])

第七题

# 7. 狗狗在一边看着我,似乎他明白了我是在犹豫,要不要给护士小姐姐打电话,所以狗狗用爪子轻轻地摆弄着我的手机,似乎是在鼓励我# 于是我拿起手机(调用电话类),输入电话号码(传入参数),彩铃响起,是小星星(屏幕输出小星星,双层循环)"""    *   ***  ***** *******  *****   ***    *"""

还是双层循环,没什么意思.但是比较考逻辑,往往阵亡在逻辑上的人不少

低级程序员看调用,中级程序员看逻辑,高级程序员看数学.

def question_7(n=3):    n = 3    for i in range(2):        for j in range(n):            if i == 0:                print(" " * (n + 1 - j) + "*" * ((j + 1) * 2 - 1))                if j == (n - 1):                    print(" " + "*" * ((j + 2) * 2 - 1))            else:                # print(" " * (j) + "*" * ((j + 1) * 2 - 1))                print(" " * ((j + 1) + 1) + "*" * ((n - j) * 2 - 1))

第八题

# 8. 然而电话并没有人接,我失望地放下手机.似乎有点饿,于是我打开冰箱"""我从上到下依次用我的24k钛合金狗眼扫描冰箱,一共发现了[1,4,5,2,4,87,32,45,23,56,4,6,9,45,56,5,4,2,1,1,32,34,23,32]这些物品请问我冰箱里一共有多少种不同的物品?list,set转换获取"""def question_8(list=[1, 4, 5, 2, 4, 87, 32, 45, 23, 56, 4, 6, 9, 45, 56, 5, 4, 2, 1, 1, 32, 34, 23, 32]):    print(len(set(list)))

list,set转换与其性质的问题,基本功属于知识储备层的问题.就算是看了一眼没想起来,百度一下总会会的,和前面的几道题一样,其实都是送分题,不会做,只是证明了,之前的努力要么不够要么路子不对.

第九题

# 9. 我最终从冰箱中拿出了[1,4,6,9,45,56]号食物,请问,我把他们放在一个盘子里,然后又把他们的顺序反了过来,但是只用了一个盘子(数组内存交换)def question_9(list=[1, 4, 6, 9, 45, 56]):    n = len(list)    length = 0    if n % 2 == 0:        length = n / 2    else:        length = (n - 1) / 2    for i in range(int(length)):        list[i] = list[n - i - 1] + list[i]        list[n - i - 1] = list[i] - list[n - i - 1]        list[i] = list[i] - list[n - i - 1]    print(list)

把我之前在面试的时候讲的问题,扩展了一下,整体难度一般,但还算不上送分题.

要点在于,判断数组的长度,因为存储的是数值,在进行长度判断之后,我们只需要加减就行了.

第十题

# 10. 看着盘子里的食物,我突然感觉少了点什么,于是我打开冰箱取出来食物23号,并按照原来的顺序(逆序)将它放在了合适的位置(list,插入)def question_10(list=[1, 4, 6, 9, 45, 56], number=23):    if number > list[len(list) - 1]:        list.append(number)    else:        for i in range(len(list)):            if list[i] > number:                list.insert(i, number)                break                # print(i)    print(list)question_1()

这个问题就是进行插入,但是到时存在一个很严重的问题,插入位置错了,或者……自己看了看大小去直接插入(这种方式…..哎,算了无力吐槽.只能说,最起码完成该问题的目标了,只是该让计算机去做的事情,你去做了,很可惜.不是最好的解决方案),我给出的一般都是通用解决方案.这个都一个星期了,要是还是总是替计算机做部分工作的话,那我也不太好说,到底是偷懒,还是投机取巧了……

统一执行

# 11.刚刚拿起食物一号,我的手机突然响了,原来是她,来电话了......恩,所以现在我要去接电话了.def exec_all_function(n=10):    for i in range(n):        if i + 1 == 4:            continue        exec("question_" + str(i + 1) + "()")

最后的话

关于函数式编程以及python语言自身的巧妙,还是希望各位,去自行体会吧.但是最起码把自己该做的做了.

转载于:https://www.cnblogs.com/fonttian/p/9162756.html

你可能感兴趣的文章
JavaScript
查看>>
基于大数据计算思想的分布式数据库
查看>>
MyBaties --day1
查看>>
.net 使用AgsXMPP与openfire连接,实现跨平台信息流通。
查看>>
DP动态规划【专辑@AbandonZHANG】
查看>>
Android TextureView简易教程
查看>>
IDEA解决从git上clone代码没有maven依赖的问题
查看>>
fatal: the remote end hung up unexpectedly
查看>>
Delphi-操作剪贴板
查看>>
hdu 1029
查看>>
Docker 容器的网络连接 & 容器互联
查看>>
吾爱专题脱壳练习----压缩壳练习之三
查看>>
LeetCode -- Palindrome Linked List
查看>>
栈应用——逆波兰式表达式的值
查看>>
vscode 快速生成html
查看>>
Python Django 数据库查询优化 事务
查看>>
Python django mtv与mvc ajax 分页器 序列化组件
查看>>
Python Django 多对多三种创建方式 form组件 cookie和session
查看>>
Python Django 生命周期 中间键 csrf跨站请求伪造 auth认证模块 settings功能插拔式源码...
查看>>
系统_Linux目录结构及功能
查看>>