文科老狗被迫学了python,进入快乐领域
当然高赞的回答已经很详尽很全面了,但就大多数人的尿性:
妙啊~ 点赞~ 喜欢~ 收藏~ 然后感觉自己汲取了知识满意的返回离开√
接下来我会分享自己学习的经验和自己的笔记,自认为更加易读易理解一些,毕竟是小白写的笔记当然更容易小白理解。
如果你是以下人群,欢迎“三连”:
或许下个学期有python课自己想要预习的
或许初次接触python但自己没有编程基础甚至像我一样的文科生
或许临近期末但苦于python没有复习资料的同学
或许想要基本了解python基本语法以及数据分析爬虫等基本操作的
如果你是有编程经验大佬的话,也希望留步,因为我现在.......也有很多问题QAQ
当然,如果你抱着“30天python速成从入门到大师”“0基础20天学会python成为数据工程师月入过万”等想法趁早离开我这篇回答吧,也趁早关掉网络盖上被子睡觉去吧。python它简单吗,简单,营销号说他简单,广告说他简单毕竟不说简单怎么割你韭菜呢?有编程基础的人说它简单,大牛们说它简单,你也就附和简单了?确实它与其他语言相比更容易接受和学习,可不代表就能高质量速成成为python工程师月入xxxxx了啊,至少一个学期学下来,周围的同学没有一个说简单的,就算是学“技术”的一些浙江考生也在叫苦不迭。一看那些割韭菜的python广告我就来气,因为总有这样一群人:高估短时间学习的效果而低谷其质量和风险,低估长时间学习的质量水平而高估其成本风险。所以如果你是游离于python知识以外杠精,别和我杠,杠就是我对!
“听说现在知乎更新后双击屏幕就能迅速汲取回答里的知识了?”
一、学习历程
1、初识。得知新学期会有编程这门课,平时也被铺天盖地的广告洗过脑于是在寒假笨鸟先飞先学一步。https://www.bilibili.com/video/BV1xs411Q799/?p=65www.bilibili.com
小甲鱼。
优点:轻松幽默,段子很多;讲解通俗易懂;小项目导向成就感强;弹幕大佬很多就像班里的学霸在线指导;对入门者友好。
缺点:比较老,基础知识上基本变化不大,但个别变化弹幕也会指出来,但等到爬虫后面的还是就算了吧;面向入门讲的比较粗浅。
2、课堂学习。其实也只是老师推了慕课视频,都是枯燥乏味ppt复读机器,老师就.....无为而治了。如果不是因为这是课的原因真的会睡过去。但其实认真听和学习,而且之前听过小甲鱼这类入门课的话还是能学到很多东西的。我们当时学的是东北大学关于python编程的慕课,这里可以选择这类正规系统详细的学习资源去学习。
3、课下学习。每堂课老师会发ppt,我在课下会把老师的ppt、慕课内容以及ppt、课本结合并融入自己的思考和想法做一个思维导图(下面会发),虽然比较耗时,但结果蛮显著的,在基础语法理论这方面掌握的相对较好,在此基础上学习爬虫、数据分析等较为高端的操作也轻松了很多。
4、复习阶段。回顾我思维导图+刷题(考前那一周刷完了题库1300道),不完全是应试心态,是边刷边查边学。
5、这个暑假计划:不贪多嚼不烂,跟着老师推荐的教材《精通scrapy网络爬虫》学习爬虫知识,实现........看片自由(不是QAQ)
很重要的一点是:不论是看视频还是ppt还是教材还是我的复习资料,不论代码看起来多简单,亲 自 动 手 打!
二、思维导图
0、总览
1、python语言基础知识
这张图是第一章的总览,看晕的时候经常回来看看
2、数据结构与函数设计
三、编程模块
这个模块里面会更新一些编程题,配合着上一模块的基础知识来更新#1、编写程序,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO。
#普通1
n = int(input("请输入一个正整数n:"))
if n<2:
print("NO")
else:
for i in range(2,n):
if n%i == 0:
print("NO")
break
else:
print("YES")
#普通函数
def isPrime(n):
if n < 2:
return False
elif n == 2:
return True
elif n>2:
for i in range (2,n):
if n%i == 0:
return False
return True
#调用
n = int(input("请输入一个正整数:"))
if isPrime(n) == True:
print("是素数")
else:
print("不是素数")
#函数思路
import math
def IsPrime(v):
n = int(math.sqrt(v)+1)
for i in range (2,n):
if v%i == 0:
return "NO"
else:
return "YES"
#函数2
def IsPrime(v):
n = v // 2
while n>1:
if v % n == 0:
print("NO")
break
n -= 1
else:
print("是素数")
#2、编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。
# 如果年份能被400整除,则为闰年
# 如果年份能被4整除但不能被100整除也为闰年
n = int(input("请输入年份:"))
if(n % 4 == 0 and n % 100 != 0) or (n % 400 == 0):
print("YES")
else:
print("NO")
#3、编写程序,用户输入一个三位以上的整数,输出其百位上的数字。
#例如用户输入1234,则程序输出2。(提示:使用整除运算。)
x=int(input("请输入一个三位数以上的整数"))
print(x//100%10)
#4、使用循环和列表推导式两种方法求解百钱买百鸡问题。
#假设大鸡5元一只,中鸡3元一只,小鸡1元三只
#现有100元钱想买100只鸡,有多少种买法?
#循环思路
#大鸡5元 中鸡3元 小鸡1元三只
#100块 买 100只 鸡 几种买法?
#设大鸡x只(5x元) 中鸡y只(3y元) 小鸡z只(z/3元)
#5x+3y+z/3=100
#x+y+z=100
#当x=1时:
# y=1 z=100-1-1
# y=2 z=100-1-2
# ....恰好100块的领出来,z能整除3才算数
#当x=2时:
# y=1 ...
#......
#遍历x
n = 0
for x in range(21):
#在x的前提下遍历y
for y in range(34):
#求z
z = 100-x-y
#如果正好100块就领出来
if z % 3 == 0 and 5*x+3*y+z/3==100:
print(x,y,z)
n+=1
print(n+1)
#列表推导
#写一个列表,最后列表展示出[(x,y,z),(x,y,z).......]
#去掉原来语句的冒号和结尾即可,加上换行和缩进和原语句是一致的
List1=[(a,b,100-a-b)
for a in range(21)
for b in range(34)
if (100-a-b) % 3 == 0 and 5*a+3*b+(100-a-b)//3==100]
print(List1)
#5、创建一个 Student 类,其具有属性: name、 age、 score,用来保存学生的姓名、年龄、成
#绩。此外,(1)写一个函数,输入学生的信息,并用对象来存储这些信息;(2)写一个函数,
#打印这些学生信息。
#标准答案
clss Student():
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
def input_student():
L=[]#用列表存储
while True:
name = input("姓名:")
if not name:
break
age = input("年龄:")
score = input("成绩:")
s = Student(name,age,score)
L.append(s)
return L
def output_student(lst):
for i in lst:
print("姓名:%s 年龄:%s 成绩:%s" % (i.name, i.age, i.score))
def main():
L = input_student()
output_student(L)
main()
#6、设计一个立方体类,定义三个属性,分别是长、宽、高。定义二个方法,分别计算并输
#出立方体的体积和表面积
class Box():
def __init__(self,length,width,high):
self.length = length
self.width = width
self.high = high
def volume(self):
print(self.length*self.width*self.high)
def superficial(self):
print(2*(self.length*self.width+self.length*self.high+self.width*self.high))
b1 = Box(1,1,1)
b1.volume()
b1.superficial()
#7、创建一个Person类,属性有name、weight,分别是姓名、体重,
#显示结果为该对象的姓名和体重;
#创建一个Sportman类,其继承Person类,
#Sportman类具有两个方法:
#eat方法,表示每次吃东西体重会增加1公斤;
#run方法,表示每次运动体重会减少0.5公斤;
#程序中创建一个Sportman对象(姓名和初始体重值自定),
#并通过调用eat和run方法改变这个对象的体重,并重新打印该对象。
#参考答案
class Person:
def __init__(self, name, weight):
self.name = name
self.weight = weight
def __str__(self):
return '我的名字叫%s, 体重是%.2f公斤' % (self.name, self.weight)
class Sportman(Person):
def run(self):
self.weight -= 0.5
def eat(self):
self.weight += 1
sportman1 = Sportman('李', 75.0)
sportman1.run()
sportman1.eat()
print(sportman1)
#8、创建一个学生类,除了具有属性:
#name、age以外,增加一个计数器的属性,用了统计学生实例数量。
#在程序中创建若干学生实例,并显示学生实例数量。
class Student:
"""学生类"""
count = 0 # 计数
def __init__(self, name, age):
self.name = name
self.age = age
Student.count += 1 # 要使得变量全局有效,就定义为类的属性
def learn(self):
print("is learning")
stu1 = Student("Jack", 20)
stu2 = Student("Amy", 21)
stu3 = Student("Lucy", 20)
stu4 = Student("Lulu", 19)
print("实例化了%s个学生" % Student.count)
#9、自定义一个异常,在输入的数据不是数字时发生。
#在程序中故意输入字母,抛出该异常。
class HelloError(Exception):
def __init__(self,n):
self.n=n
try:
n=input("请输入数字:")
if not n.isdigit():
raise HelloError(n)
except HelloError as hi:
print("HelloError:请输入字符。\n您输入的是:", hi.n)
else:
print("未发生异常")
#10编写函数,输入字符串,分别统计大写字母、小写字母、数字、其他字符的个数
#并以元组的形式返回结果
def demo(v):
capital = little = digit = other =0
for i in v:
if 'A'<=i<='Z':
capital+=1
elif 'a'<=i<='z':
little+=1
elif '0'<=i<='9':
digit+=1
else:
other+=1
return (capital,little,digit,other)
x = 'capital = little = digit = other =0'
print(demo(x))
#11、编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和
#利用可变长度参数
def MaxSum(*args):
print("最大值是:",max(args))
print("和是:",sum(args))
#调用
MaxSum(12,23,34,46,1234)
#12、编写递归函数,计算n!(n=10)
def funJC(n):
if n == 0 or n == 1:
return 1
else:
return n * funJC(n-1)
print("当n=10时,n!的结果是:",funJC(10))