Python快速上手-从Pycharm开始(1~9)

    技术2022-07-14  73

    Python快速上手-从Pycharm开始

    前言pycharm刷题方针实例001:数字组合实例002:“个税计算”实例003:完全平方数实例004:这天第几天实例005:三数排序实例006:斐波那契数列实例007:copy实例009:暂停一秒输出总结

    前言

    下面介绍的这一些练习题都是取自link,侵删。

    pycharm

    首先去官网下载一个pycharm,链接是link.OK记得安装Community社区版本,这个是免费的。 启动软件,我们解释一下: 这里需要简单配置一下环境。 new environment using这个选项,默认是VistualEnv。大家需要明确一点:Pycharm只是一个编译器,它并没有给我们提供python的编译环境,那些默认路径啥的都得咱们自己去配置,那些包啊啥的都得咱们自己导入。VirtualEnv意思是把你安装的python环境复制一份,放到你的工程下,这样一来,多个python项目就不会相互干扰。但是你得清楚这样一来,你在命令行里pip install安装的库可就没法作用到VirtualEnv里。 当然咱们是个人练习,安装过的package就不想再多次安装了,咱们就用Existing interpreter,一劳永逸。

    刷题方针

    按照链接里老哥给的100道题目,先尝试自己写,然后有语法障碍的话就直接参考link查询一下即可,查不到的请自行发挥想象力。

    实例001:数字组合

    题目 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 解析 思路很简单,需要一个for循环。

    ans = 0 for i in range(0, 4): for j in range(0, 4): for k in range(0, 4): if (i != j) and (j != k) and (i != k): ans += 1 print(ans)

    大神用的是itertools,我去了解一下。 文档上说这是一种为了高效迭代器而产生的函数集合,听起来还不错,我找到了这个函数: 咱们试试看:

    import itertools ans = 0 details = [1,2,3,4] for i in itertools.permutations(details, 3): ans += 1 print(ans)

    收获 1.用缩进来代替花括号,一开始有点不适应;语句结束时居然不用加分号,一开始有点不适应;if语句的判断居然用and且不需要加大括号,有点不适应; 2.这个范围for循环,我查了一下文档,即使在for循环中更改循环变量也是没啥用用处的,僵硬。range(a, b)其实是一个左闭右开区间。 3.ans++好像是不能用,应该是不支持这种写法,难受。 4.导入库就很简单,直接import即可,使用库函数直接.操作符即可。这个迭代器库还不错,挺好的。 5.注释也挺方便的,单行注释#,多行注释用三个单引号或者三个双引号即可

    实例002:“个税计算”

    题目 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 解析 思路可以说是非常简单了。

    profit = int(input('Show me the money: ')) bonus = 0 thresholds = [100000, 100000, 200000, 200000, 400000] rates = [0.1, 0.075, 0.05, 0.03, 0.015, 0.01] for i in range(len(thresholds)): if profit <= thresholds[i]: bonus += profit * rates[i] profit = 0 break else: bonus += thresholds[i] * rates[i] profit -= thresholds[i] bonus += profit * rates[-1] print(bonus)

    收获 1.定义一个用户输入也是非常简单了,这里指定成int类型输入。 2.break的逻辑应该是和正常语言一致; 3.len()函数可以返回字符串、元组或者列表的数量,类似.size()操作

    实例003:完全平方数

    题目 一个正整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 解析 非常简单了,直接while循环好了

    from math import sqrt def issantify(n): p = sqrt(n + 100) q = sqrt(n + 268) ans = False if p == int(p) and q == int(q): ans = True return ans ans = 0 while issantify(ans) == False: ans += 1 print(ans)

    收获 1.写个函数还是很简单的,def即可,想输出结果就直接return,实在是写的太随心所欲了。 2.使用sqrt需要从math中导入sqrt; 3.bool值有点意思,True and False;

    实例004:这天第几天

    题目 输入某年某月某日,判断这一天是这一年的第几天? 解析 就考虑一个闰月就完事儿了,这题简单

    def isLeapYear(y): return (y%400==0 or (y%4==0 and y%100!=0)) DofM=[0,31,28,31,30,31,30,31,31,30,31,30] res=0 year=int(input('Year:')) month=int(input('Month:')) day=int(input('day:')) if isLeapYear(year): DofM[2]+=1 for i in range(month): res+=DofM[i] print(res+day)

    这一题没有任何收获,pass

    实例005:三数排序

    题目 输入三个整数x,y,z,请把这三个数由小到大输出。 解析 咱们尝试用一下python的那些排序函数

    raw2=[] for i in range(3): x=int(input('int%d: '%(i))) raw2.append(x) print(sorted(raw2))

    收获 1.这个raw[]的定义真的是让我非常难受了,这不就直接成vector了???操作这么简单么???直接用append就添加元素了。那么删除元素呢?参考这篇文章删除元素可以说是非常方便了,我丢,python属实方便; 2.这个sorted和sort的区别是,前者返回一个新的列表,后者是在输入列表的基础上进行排序。更多可以参考这个排序

    实例006:斐波那契数列

    解析 那就实现呗,至于实现多少个呢?我看就定100个好了。斐波那契数列还是很好实现的,f1 = 1, f2=1, 后面fn = f(n-1) + f(n-2),老递归了。

    def Fib(n): return 1 if n<=2 else Fib(n-1)+Fib(n-2) print(Fib(int(input())))

    收获 1.这个递归其实到没有惊讶到我,主要是学到了类似?:这样的写法

    实例007:copy

    题目 将一个列表的数据复制到另一个列表中。 解析 就直接用copy模块,没啥好多说的。

    import copy a = [1,2,3,4,['a','b']] b = a # 赋值 c = a[:] # 浅拷贝 d = copy.copy(a) # 浅拷贝 e = copy.deepcopy(a) # 深拷贝

    收获 1.copy模块还是好用啊,舒服; 2.关于浅拷贝和深拷贝的区别不再叙述; 3.print函数真的硬核,直接把列表所有元素都打印出来了。。。

    实例009:暂停一秒输出

    解析 使用 time 模块的 sleep() 函数。

    import time time.sleep(1)

    收获 1.关于sleep以后系统干了啥就不多说了

    总结

    OK到这里基本上接触的知识就很少,感觉难度不高,后面咱们有针对性的研究一些知识。

    Processed: 0.011, SQL: 10