python第一周学习内容
第一天
1.概述
1. python 是一种解释型语言,解释型语言的最大优点是平台可移植性,最大的缺点是执行效率低下.
2. 今天计算机硬件已经足够发达的时候,我们追求的更多的是开发效率而不是程序的执行效率
3. python的[官方网站](http://python.org)下载python 的安装程序以及查看相关文档.
说明: 如果要在Linux环境下更新到Python3.x版本需要通过源代码构建安装
4. 我们可以使用Python的包管理工具pip来安装第三方模块(在DOS环境输入下列命令).
pip install ipython jupyter
或者
python -m pip install ipython jypyter
5. 第一个python程序 - hello, world!
"""
第一个python程序
version: 0.5
Author: 吕海军
Date:2017-1-1
Modifier: 下一个修改
Date:2018-1-1
"""
#使用了python内置的print函数
print(hello, world!)
6. 如果想用交互式环境进行Python开发那么可以使用ipython或者jupyter的notebook项目
jupyter notebook
7. 如果要做团队开发以及需要使用多文件多模块协作的大型项目,我们推荐使用PyCharm的集成开发工具,我们可以从JetBrains公司的[官方网站](http://www.jetbrains.com)下载PyCharm
第二天
2.变量
变量命名在Python中,变量命名需要遵循以下规则。
硬性规则:
-变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。
-大小写敏感(大写的a和小写的A是两个不同的变量)。
-不要跟关键字(有特殊含义的单词)和系统保留字(如函数、模块等的名字)冲突。
PEP 8要求:
-用小写字母拼写,多个单词用下划线连接。
变量是数据的载体,给变量(事实上应该是所有的标识符)命名做到见名知意也是非常重要的
#变量的类型
a = 10 #int整型
b = 10.3 #float浮点型
c = 'hello' #str字符串型
d = 1 + 5j #complex复数型
e = not a > b #bool布尔型
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))
3.运算符
x = float(input('x = '))
y = float(input('y = '))
print('%f + %f = %f' % (x, y, x + y))
print('%f - %f = %f' % (x, y, x - y))
print('%f * %f = %f' % (x, y, x * y))
print('%f / %f = %.2f' % (x, y, x / y))
#整除法(去掉余数)
print('%d // %d = %d' % (x, y, x // y))
#求模(求余数)
print('%d %% %d = %d' % (x, y, x % y))
#求幂(次方)
print('%f ** %f = %f' % (x, y, x ** y))
练习1:计算圆的周长和面积
#输入圆的半径求圆的面积和周长
from math import pi
radius = float(input('输入圆的半径'))
perimeter = 2 * pi * radius
area = pi * radius ** 2
print('圆的周长%f' % perimeter)
print('圆的面积%f' % area)
练习2:实现英制单位和公制单位的转换
#实现英制单位和公制单位的转换
a = 2.54
inch = float(input('输入英寸'))
cm = inch * a
print('%.2f英寸 = %.2f厘米' % (inch , cm))
练习3:判断一个年份是不是闰年
year = int(input('输入一个年份'))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print('是闰年')
else:
print('不是闰年')
第三天
4.分支结构
5.循环结构
练习1:用户身份验证
import getpass
username = input('请输入用户名: ')
#getpass.getpass可亿以让终端不显示输入内容
password = getpass.getpass('请输入密码: ')
if username == 'admin' and password == '123456':
print('欢迎使用本系统')
else:
print('密码或用户名错误!')
练习2:输入三条边长如果能构成三角形就计算周长和面积
import math
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b >c and b + c > a and a + c > b :
perimeter = a + b + c
half = perimeter / 2
area = math.sqrt(half * (half - a) * (half - b) * (half - c))
print('面积: %.2f' % (area))
print('周长:', perimeter)
else:
print('三条边的长度不能构成三角形!')
练习3:1~100电脑随机出一个数,玩家猜
from random import randint
answer = randint(1,100)
counter = 0
game_over = False
while not game_over:
your_answer =int(input('请输入'))
counter += 1
if your_answer < answer:
print('大一点')
elif your_answer > answer:
print('小一点')
else:
print('恭喜你猜对了')
game_over = True
if counter > 7:
print('智商不够')
练习4:计算扣除个人所得税的实际工资
your_money = int(input('输入你的工资'))
insurance = int(input('输入五险一金'))
rate = [0.03, 0.10, 0.20, 0.25, 0.30, 0.35, 0.45, 0]
deduction = [0, 105, 555, 1005, 2755, 5505, 13050, 0]
ss = your_money - insurance - 3500
x = y = 0
if ss < 0:
x = y = 7
print('你不用交个税')
elif 1500 > ss > 0:
x = y = 0
elif 4500 > ss > 1500:
x = y = 1
elif 9000 > ss > 4500:
x = y = 2
elif 35000 > ss > 9000:
x = y = 3
elif 55000 > ss > 35000:
x = y = 4
elif 80000 > ss > 55000:
x = y = 5
else:
x = y = 6
last_money = your_money - insurance - ss * rate[x] + deduction[y]
print('实际到手工资%.2f' % last_money)
第四天
练习1:输入三个数返回最大值
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
if a > b:
my_max = a
else:
my_max = b
if my_max < c:
my_max = c
print(my_max)
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
my_max = a > b and a or b
my_max = c > my_max and c or my_max
print(my_max)
练习2:输入三个数,按从小到大输出
#输入三个数,按从小到大输出
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
if a > b:
a, b = b, a
if b > c :
b, c = c, b
if a > b:
a, b = b, a
print(a, b, c)
#输入三个数,按从小到大输出
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
(a, b) = a > b and (b, a) or (a, b)
#如果 a > b 用 b 替换 a, 用a 替换 b
(b, c) = b > c and (c, b) or (b, c)
(a, b) = a > b and (b, a) or (a, b)
print(a, b, c)
练习3:输出100内的素数
from math import sqrt
for num in range(2, 100):
is_prime = True
for factor in range(2, int(sqrt(num) + 1)):
if num % factor == 0:
is_prime = False
break
if is_prime:
print('%d是素数' % num)
练习4:输出九九乘法表
for row in range(1, 10):
for col in range(1, row + 1):
print('%d*%d=%d' % (row, col, row * col), end ='\t')
print()
练习5:打印各种三角形图形
'''
A
AB
ABC
ABCD
ABCDE
##########################
*
**
***
****
*****
******
#########################
*
***
*****
*******
*********
'''
for x in range(5):
for col in range(65, 65 + x + 1):
print(chr(col), end = '')
print()
################################
for x in range(6):
for y in range(6):
if y < 6 - x - 1:
print(' ', end = '')
else:
print('*', end = '')
print()
#################################
row = 5
for x in range(row):
for y in range(1, row * 2):
if y < row - x or y > row + x:
print(' ', end='')
else:
print('*', end='')
print()
#或者
row = 5
for x in range (row):
for y in range(row):
if y < row - x - 1:
print(' ', end = '')
for _ in range(x * 2 - 1):
print('*', end = '')
print()
练习6:100块钱买100只鸡
"""
公鸡5元一只
母鸡3元一只
小鸡1元三只
用100元买100只鸡 问公鸡母鸡小鸡各多少只
x + y + z == 100
5 * x + 3 * y + z // 3 == 100
z % == 0
穷举法 - 穷尽所有的可能性直到找到正确答案
"""
for x in range(21):
for y in range(34):
z = 100 - x - y
if x + y + z == 100 and 5 * x + 3 * y + z // 3 == 100 and z % 3 == 0:
print(x, y, z)
练习7:输出1000以内的水仙花数
#水仙花数
for x in range(2, 1000):
a = x // 100
b = x % 100 // 10
c = x % 10
if x == a **3 + b ** 3 + c ** 3:
print(x)
练习8:输出10000以内的完美数
from math import sqrt
for s in range (2, 10000):
y = 1
for x in range(2,int(sqrt(s)) + 1):
if s % x == 0:
y += x
if x != s // x:
y += s //x
if y == s:
print(y)
练习9:五人分鱼问题
A,B,C,D,E五个人捕鱼后已凌晨,大家便睡觉。早上A第一个醒来,将鱼均分成五份,把多余的一条鱼扔掉,拿走自己的一份,B第二个醒来,也将鱼均分为五份,把多余的一条鱼扔掉,拿走自己的一份。CDE依次醒来,也按同样的方法拿鱼,问他们合伙至少捕了几条鱼。
fish = 1
while True:
num = fish
fish += 1
is_enough = True
for _ in range(5):
if (num - 1) % 5 == 0:
num = (num - 1) // 5 * 4
else:
is_enough = False
break
if is_enough:
print('至少捕了%d条鱼'% fish)
break
练习10:Craps赌博游戏
两个骰子,第一次:玩家摇出7, 11 玩家获胜,摇出2,3,12庄家胜,其他点数继续,第二次及以后:玩家摇出7庄家胜,若与第一次相同玩家胜,其他点数继续
from random import randint
from time import time
s = 0
player1 = randint(1, 6)
player2 = randint(1, 6)
fist_point = player1 + player2
print('玩家摇出了%d点' % fist_point)
go_on = False
if fist_point == 7 or fist_point == 11:
print('玩家胜')
elif fist_point == 2 or fist_point == 3 or fist_point == 12:
print('庄家胜')
else:
go_on = True
while go_on:
s += 1
player1 = randint(1, 6)
player2 = randint(1, 6)
current_point = player2 + player1
print('玩家摇出了%d点' % current_point)
if current_point == 7:
print('庄家胜')
break
elif current_point == fist_point:
print('玩家胜')
break
星期五
安装调试pycharm
总结这一周所学,写这篇博客