• 老赵
    2018-06-02
    通过余数判定年份这个方法,想起计算机课程的经典问题:计算“质数”。

    之前在陈皓老师的一篇博文(打印质数的各种算法--https://coolshell.cn/articles/3738.html)里面,列举了经典的方法。文章里说,实际应用中,会事先把质数计算好,存到文件里,然后读取。这种方法效率更高。
    后续会接触Python里的“字典”概念,也可以通过这个途径来实现快速定位年份的属相。

    另外,生肖是12一循环,就是“十二进制”,年份是十进制。这个问题又可以归结为不同进制数的互算。

    感谢尹老师,案例选择确实讲究。
    展开

    作者回复: 氦同学非常认真哦,能够通过视频内容联系到以前学习过的进制、质数等概念进一步加深对程序的理解;
            编程就是这样的,如果能够通过数学、算法等方式来优化逻辑,又不增加阅读代码难度的话,就会极大的提升代码的性能,你积累的知识越多,你的代码就越优质,这也是编程让人着迷的地方。

    
     17
  • 傲客
    2019-02-20
    老师,我真的0基础纯小白。
    直接抄写你的代码,发现几个问题:
    1、无法显示中文,后来在文件头部加了#-*- coding: utf-8 -*-
    2、计算带宽无法取小数点,譬如100/8,我直接输出的结果是12,而不是12.5。然后在头部添加了from __future__ import division
    3、十二生肖计算的时候,你用[0:4],输出的是鼠到龙五个生肖,而我输出的是一个半——鼠?。我用[0:6](必须是3的倍数),才能显示下一个生肖。

    我的问题是:
    1、如何不需要在头部加#-*- coding: utf-8 -*-就可以让pycharm识别中文?这串代码是什么意思?
    2、如何不用在头部加from __future__ import division就可以让pycharm取小数点而不是自动取整?(我用“终端”做除法就会取小数点),还有这段代码是什么意思?
    3、上面的第三个问题的原因我一直没找到。。。

    PS:环境:mac pro,pycharm2018.2.4

    谢谢
    展开

    作者回复: 您好,我依次回答一下这三个问题:
    1 coding: utf-8 是声明代码文件使用的字符编码是utf-8编码,让python以声明的编码来运行源代码文件。考虑到您使用的是mac环境,是否pycharm运行这段代码使用了python2 而不是python3 ? 可以在Pycharm界面运行时观察界面下方输出消息,确定当前使用的是哪个版本的python,因为在python3默认使用的就是utf-8编码。更改pycharm使用python3运行的方法是 点击pycharm界面上的运行-编辑配置, 在Python interpreter 改为python3 解释环境。
    2 这是一个除法精确度的问题,在python2环境"/"符号两边都是整数,返回的结果也是整数,在python3以及不存在这个情况了,这里也验证了第一个问题,您在Pycharm环境使用的是python2解释器,在终端由于Python3是后安装的,所以优先使用了Python3解释器。
    3 还是一个编码问题, 使用[0:4]是因为一次操作的单位是一个字节,所以没办法取到完整的“中文字”,编码规定:UTF-8编码,一个中文字符需要用3个字节来表示;GBK编码,一个中文字符需要2个字节来表示。这也是为什么你需要是用3的倍数的原因了。

    
     3
  • 黄宇鱼
    2018-12-21
    我是一个编程的初学者,我想问问为什么要从猴开始了?如一楼所说是因为十进制和十二进制的关系嘛?那我又如何去判断我应该从哪个开始了?

    作者回复: 你好,是为了方便计算年份和生肖的对应关系,例如年份2016刚好可以被12整除,而这一年的生肖是猴,所以把猴放在了字符串的第一位,如果字符串以鼠牛虎兔的顺序定义,我们计算时要将2016%12+9,比较繁琐

    
     1
  • 赵赵
    2018-10-09
    #字符串作业
    s="hello"
    print(s)

    s2="let's go"
    print(s2)

    s3='"the zen of python"--by time peter'
    print(s3)

    b='xyz'
    a='abc'
    print(a+b)
    print(b[1:2])
    print(a*10)

    print('a' in b)
    print('a' in a)
    展开
    
     1
  • 不知道想做什么工作迷...
    2019-12-14
    C语言不需要顶格,但Python要求顶格写;C语言中空格没有实际意义,只是为了工整,但貌似Python空格也持有意义?

    作者回复: python使用空格做语句块的分隔标记,一般称作缩进

    
    
  • sera
    2019-02-25
    老师,不好意思,我完全零基础。请教一下,为什么year % 12 输出2 ?

    作者回复: 在python 中, “%”符合会返回除法的余数,year变量赋值之后和 12做“%”运算,之后的余数是2,所以返回的结果是2

     1
    
  • 孑然
    2019-02-16
    计算年份,就比如选择一个较远的鼠年作为常量,然后用输入的年份减去这个常量再除12,得到的余数-1,再输出String里的年份,这样会不会更好?

    作者回复: 是可以的, 这里的例子主要想用“笨方法”演示字符串的操作,其实从算法来讲并不是最优的

    
    
  • 小潘221150
    2018-10-25
    老师,问个问题。我现在想用python从excel里读取内容,比如excel中有一列叫server name,然后呢我想每次读取一条记录的时候就根据server name去创建一个文件夹,比如server name是xxxx,我就想创建出来一个文件夹叫xxxx,然后在这个新创建的文件夹下面再创建几个文件。excel里有多少server name我就创建多少个以server name为名的文件夹,之后再去各个文件夹下面创建文件。搜不到解决办法了,只能求助考试了。先谢谢老师了

    作者回复: 我说下解决办法哈,整体来说这个问题不难,因为已经有各种库和方法能够实现基本需求,你需要把一个完整的功能做拆分,比如将读取excel功能封装成一个函数,得到的servername返回值可以使用列表结构存储;创建文件夹的功能明显要根据列的数量来决定,因此需要继续构造一个循环结构;创建文件夹可以使用os模块实现,在文件夹中继续做其他的工作可以把这些写入到一个函数放入到创建文件夹的循环结构中。
    主要还是要掌握把一个大问题拆分成小问题,把小问题转化为代码的能力。

    
    
  • xueguhanyu
    2018-10-09
    尹老师,pycharm输入中文,运行后出现乱码,汉字无法打印出来?这种该如何修复,在百度找了很多这种方法都无法修复。

    作者回复: 试一下修改pycharm-settings-file encodings下面的IDE encodings 和Project encoding 为UTF-8试一试?因为windows 默认是GBK编码,当有编码不一致时就容易出现中文乱码的情况

    
    
我们在线,来聊聊吧