百钱买百鸡python创新编程_编程零基础应当如何开始学习 Python?

文科老狗被迫学了python,进入快乐领域

当然高赞的回答已经很详尽很全面了,但就大多数人的尿性:

妙啊~ 点赞~ 喜欢~ 收藏~ 然后感觉自己汲取了知识满意的返回离开√

接下来我会分享自己学习的经验和自己的笔记,自认为更加易读易理解一些,毕竟是小白写的笔记当然更容易小白理解。

如果你是以下人群,欢迎“三连”:

或许下个学期有python课自己想要预习的

或许初次接触python但自己没有编程基础甚至像我一样的文科生

或许临近期末但苦于python没有复习资料的同学

或许想要基本了解python基本语法以及数据分析爬虫等基本操作的

如果你是有编程经验大佬的话,也希望留步,因为我现在.......也有很多问题QAQ

当然,如果你抱着“30天python速成从入门到大师”“0基础20天学会python成为数据工程师月入过万”等想法趁早离开我这篇回答吧,也趁早关掉网络盖上被子睡觉去吧。python它简单吗,简单,营销号说他简单,广告说他简单毕竟不说简单怎么割你韭菜呢?有编程基础的人说它简单,大牛们说它简单,你也就附和简单了?确实它与其他语言相比更容易接受和学习,可不代表就能高质量速成成为python工程师月入xxxxx了啊,至少一个学期学下来,周围的同学没有一个说简单的,就算是学“技术”的一些浙江考生也在叫苦不迭。一看那些割韭菜的python广告我就来气,因为总有这样一群人:高估短时间学习的效果而低谷其质量和风险,低估长时间学习的质量水平而高估其成本风险。所以如果你是游离于python知识以外杠精,别和我杠,杠就是我对!

“听说现在知乎更新后双击屏幕就能迅速汲取回答里的知识了?”

一、学习历程

1、初识。得知新学期会有编程这门课,平时也被铺天盖地的广告洗过脑于是在寒假笨鸟先飞先学一步。https://www.bilibili.com/video/BV1xs411Q799/?p=65​www.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))

你可能感兴趣的:(百钱买百鸡python创新编程)