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

前言

下面介绍的这一些练习题都是取自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到这里基本上接触的知识就很少,感觉难度不高,后面咱们有针对性的研究一些知识。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值