机器语言:机器指令,直接执行
汇编语言:符号化
高级程序设计语言(编译型)
高级程序设计语言(解释型)
第一代:
打孔机(机器语言)和汇编,编程效率不高
第二代:
C,Basic,Pascal等为主,命令式语言
第三代:
C++,Delphi等面向对象为主要语言
第四代:
Java,C#自带垃圾回收,中间指令编译
第五代:
Python,Java,JS,PHP,Objective+C等
主要为了解决互联网网站,及App应用的编程
从上面的历史,除了C,其它的语言都会逐步进入历史
Python 是一个高层次的结合了解释性、编译性、互动性的面向对象的、动态的、强类型的、脚本式的语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP 和Lua 语言。
Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到数据采集、数据分析、人工智能。
因为Python是跨平台的,它可以运行在Windows 、Mac和各种Linux/Unix 系统上。在Windows 上写Python程序,放到Linux上也是能够运行的。要开始学习Python编程,首先就得把Python安装到你的电脑里。
安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境。
Python的作者说了这样一句话 Python2.x已经是遗产,SO请使Python3.x
Python:https://www.python.org/
注意:
安装时若未勾选设置环境变量可以使用py指令
安装时若勾选设置环境变量可以使用python、py指令
环境变量可以手动配置
推荐使用py指令,方便多版本间切换 如:py -3.6
推荐:
pycharm:
官方地址:
https://www.jetbrains.com/pycharm/
其他IDE:
1.Eclipse+Pydev
2.Sublime Text
3.python自带的IDLE
4.vscode
…
项目(project):模块及程序包之家
程序包(package) : 模块之家
模块(.py):数据量、函数、类、语句之家
类(class):数据量、函数、类、语句之家
函数(function):语句块之家
1.物理结构
代码保存在以.py结束的后缀文件中
同一个项目中可以有很多个程序文件
2.逻辑结构
程序以模块的形式来划分
模块的区分不能单看其短名称 需要带上其所在的包名称/目录来进行区分
一般建议模块放置在包中 便于管理
1.
“”“
模块的说明性文字
”“”
2.
1.import 包/模块
2.from 包/模块 import 包/模块中的部分内容
作用:
1.自己没有想使用别人的 就需要先导入
2.被导入的包或模块会自动被解释器解释执行
注意包执行的是包内的__init__.py这个模块
例:
import math
print(math.pi)
from math import pi
print(pi)
3.数据量
程序中存储数据的容器
例:
age = 21
level = 17
4.函数
存放系列语句的地方
例:
def area®:
return pi * r * r
c1 = area(10)
print(c1)
5.类
面向对象的核心 后续会细讲
例:
class Circle:
r = 0
def area(self):
return self.r * self.r * pi
6.语句/指令:目前的重点
程序需要执行的命令
可以命令程序执行很多条指令
执行次序要记牢:自上向下 自左向右
print(“剧情开始”)
print(“剧情发展”)
print(“剧情结束”)
注意:
1.可以使用当前行以前的内容
2.注意前后文的逻辑影响
Python崇尚自由,但为了真正的自由,我们必须自我约束:约定和规定(PEP8部分)
通过pycharm的使用会慢慢养成标准的编程习惯,一定要坚持
一般ctrl+alt+L即可搞定格式问题
整数:关键字int
Python 可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样;例如:1,100 ,-8080 ,0等等。
计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀0-9,a-f表示; 例如:0xff00 ,0xa5b4c3d2,等等。
浮点数:关键字float
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。浮点数可以用数学写法,如1.23 ,3.14 ,-9.01等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5 等等。
布尔值:逻辑上的真和假 关键字bool
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来。
字符串 关键字str
字符串是以单引号’或双引号"括起来的任意文本,比如’abc’ ,“xyz"等等。请注意,’’ 或”" 本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’ 只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用"" 括起来,比如"I’m OK" 包含的字符是I,’,m,空格,O,K这6个字符。
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一
个特殊的空值。
数据类型转换:为了运算方便
转换条件:数据具备可转换性 例如这样就会错误:int(“abc”)
转换方式:类型关键字(x) 例:int(“111”) str(123)等
例:
float() 从一个字符串或整数创建一个新的浮点数(小数)。
#声明变量
number=“12”
#转换为浮点型
new_num=float(number)
#打印结果
print(new_num)
#打印类型
print(type(new_num))
int() 从一个字符串或浮点数创建一个新的整数。
str_num = “12”
f_num = 1.9
str_int = int(str_num)
f_int = int(f_num)
print(str_int)
print(f_int)
print(type(str_int))
print(type(f_int))
str()从一个数(可以是任何其他类型)创建一个新的字符串。
num1 = 17.2
num2 = 11
num3 = True
f_str = str(num1)
int_str = str(num2)
bool_str = str(num3)
print(f_str)
print(int_str)
print(bool_str)
print(type(f_str))
print(type(int_str))
print(type(bool_str))
技巧:可以利用字符串求得数字位数:len(x)表示求x的字符数量
print(len(int_str))
bool() 从一个数(可以是任何其他类型)创建一个新的布尔值。
注意:
非True、False的数据也可以转换为布尔值:
0、None、“”均转换为False,以外的转换为True
str1 = “”
str2 = None
str3 = “0”
num1 = 0
num2 = 3
bool_str1 = bool(str1)
bool_str2 = bool(str2)
bool_str3 = bool(str3)
bool_num1 = bool(num1)
bool_num2 = bool(num2)
print(bool_str1)
print(bool_str2)
print(bool_str3)
print(bool_num1)
print(bool_num2)
# 2.猜拳游戏:
# 使用判断语句,完成石头剪刀布的猜拳游戏。
#
import random
def finger_guessing():
guess1 = input("请用户选择输入石头, 剪刀, 布:")
# guess1 = random.choice(["石头", "剪刀", "布"])
guess2 = random.choice(["石头", "剪刀", "布"])
player1 = "用户玩家"
player2 = "电脑玩家"
# 80%
# random [1,1000] 1-200人赢
r = random.randint(1, 1000)
if 1 < r < 200:
print("用户玩家出石头,电脑玩家出剪刀,用户玩家赢") # 假装游戏正规运行,偷改省略
else:
if guess1 == "石头" and guess2 == "剪刀" \
or guess1 == "剪刀" and guess2 == "布" \
or guess1 == "布" and guess2 == "石头":
print(f"{player1}出{guess1},{player2}出{guess2},{player1}赢")
elif guess1 == guess2:
print(f"{player1}出{guess1},{player2}出{guess2},平局")
else:
print(f"{player1}出{guess1},{player2}出{guess2},{player2}赢")
n = int(input("你要玩几次猜拳游戏:"))
for i in range(n):
finger_guessing()
# 任务5:
# 提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“88888”,则提示正确,
# 否则,提示用户“用户名或者密码错误”,但如果错误达到3次,则提示用户"您的账户已被冻结",退出程序。
#
in_next = 0
for i in range(3):
user_name = input("请输入用户名:")
user_pwd = input("请输入密码:")
if user_name != "admin" or user_pwd != "88888":
print("用户名或者密码错误!")
in_next += 1
if in_next == 3:
print("您的账户已被冻结")
else:
print("正确")
break
# 任意进制转换
# def pares():
# pares_str = ""
# num3 = int(input("请输入数字:"))
# base = int(input("请输入转换进制n:"))
# while num3 != 0:
# pares_str += str(num3 % base)
# num3 //= base
# print(pares_str)
#
#
# pares()
#
# 1.打印九九乘法:
# 1*1=1
# 1*2=2 2*2=4
# 1*3=3 2*3=6 3*3=9
# for i in range(1, 10):
# for j in range(1, i + 1):
# print(f"{j}X{i} = {i * j}\t", end=" ")
# print()
# # 任务13:
# # 玩家进来以后要买筹码;
# # 在每次掷骰子前,
# # 要下注(50~手里剩余的筹码);
# # 接着要选择买大小;
# # 程序要模仿掷骰子,产生一个1~6的随机数
# # 根据掷骰子的结果,判断玩家的输赢,改变玩家的手里的筹码
# # 如果买大,4~6是赢,1~3是输
# # 如果小,1~3是赢,4~6是输
# # 如果赢了,玩家的筹码+=下注金额
# # 如果输了,玩家的筹码-=下注金额
# # 提示玩家是否要退出游戏
# # 玩家手里的筹码小于最小下注金额,要强制玩家退出
# # 注意 :先理清楚思路,从宏观上考虑流程,不要考虑每个步骤的细节。流程搞清楚以后,再琢磨每个步骤的细节。然后写代码。
#
#
# def stake():
# chip = 50
# while chip > 0:
# print(f"欢迎进入掷骰子游戏,您的目前筹码为{chip}")
# Stake = int(input("请输入下注金额:"))
# if chip < Stake:
# print("筹码小于最小下注金额,强制玩家退出!")
# break
# dice_num = random.randint(1, 6)
# result_num = "大" if dice_num > 3 else "小"
# guess = input("请选择买大还是买小:")
# if guess == result_num:
# chip += Stake
# print(f"骰子数是{dice_num}本次猜{guess}赢了,筹码为{chip}")
#
# else:
# chip -= Stake
# print(f"骰子数是{dice_num}本次猜{guess}输了,筹码为{chip}")
# an = input("玩家是否要退出游戏(y/n):")
# if an == "y":
# print("已退出!")
# break
# else:
# print("已退出!")
#
#
# 任务8:
# 编程实现如下图列出的图形。
# *
# ***
# *****
# *******
#
# for i in range(4):
# print("*"*(2*i+1))
# 任务9:
# 让用户输入一个数显示下面内容。
# *******
# ******
# *****
# ****
# ***
# **
# *
#
# for i in range(7,0,-1):
# print("*"* i)
# 任务10:
# 编程实现如下图列出的图形。
#
# *
# ***
# *****
# *******
#
# for i in range(4):
# print(" " * (4-i)+"*"*(2*i+1))
# 任务11:
# 编程实现如下图列出的图形。
# *
# ***
# *****
# *******
# *****
# ***
# *
n_11 = int(input("请输入奇位行数:"))
if n_11 % 2==0:
print("无法打印!")
else:
for i in range(n_11):
if i <= n_11 // 2:
print(" " * (n_11 // 2 - i) + "*" * (2 * i + 1))
else:
print(" " * (i - n_11 // 2) + "*" * ((n_11 - i) * 2 - 1))
pass
pass
# 画图如下
# 0 0 0 0 0
# 0 1 1 1 0
# 0 1 2 1 0
# 0 1 1 1 0
# 0 0 0 0 0
# n = int(input("请输入行数:"))
# for i in range(n):
# for j in range(n):
# print(min(i,j,n-i-1,n-j-1),end=" \t")
# print()
# 5 5 5 5 5
# 5 4 4 4 5
# 5 4 3 4 5
# 5 4 4 4 5
# 5 5 5 5 5
# m = int(input("请输入行数:"))
# for i in range(1,m+1):
# for j in range(1,m+1):
# print(max(i,j,m-i+1,m-j+1),end=" \t")
# print()
# 12.如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".
# list12 = []
# for i in range(100, 1, -1):
# for j in range(2, i):
# if i % j == 0:
# break
# else:
# list12.append(i)
# print(list12)
# for i in range(len(list12)):
# if list12[i-1] - list12[i] == 2:
# print(list12[i - 1],list12[i])
# 11.今有四个人,他们得年龄各不相同,他们年龄总和是129,而其中有三个人的年龄是平方数,
# 若倒退15年,这四人中仍有三个人的年龄是平方数,求他们各自的年龄
# #
list_11 = []
for i in range(129):
for j in range(129):
for k in range(129):
for m in range(129):
if i*i +j*j+k*k+m ==129 and i!= j and i!= k \
and i!= m and j!= k and j!= m and i!= k and i!= m:
# print( i*i ,j*j,k*k,m)if i*i >15 and j*j>15 and k*k>15and m>15else None
a =i*i
b =j*j
c = k*k
d = m
for n in range(1, 13): # a,b,c,最少有两个减去15还是平方数
for x in range(1, 13): # 无外乎两种可能
if a ==n*n +15 and b ==x*x +15 or b ==n*n +15 and c ==x*x +15:
if a >15 and b>15 and c>15and d>15 : # 此时结果已出,但顺序有多种可能
list_11.append(a) # 查重!
if b not in list_11:
list_11.append(b)
if c not in list_11:
list_11.append(c)
# if d not in list_11:
list_11.append(d)
print(f"他们各自的年龄组合为:{list_11},\t",end="\n"
f"十五年前为:{ [i-15 for i in list_11]}")
break
# 10.验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.
#
# num_10 = 10
# sum_10 = 0
# while num_10 > 9:
# str_10 = str(num_10)
# for i in range(len(str_10)):
# sum_10 += int(str_10[i])
# # print(sum_10)
# # print(num_10)
# if (num_10 - sum_10) % 9 == 0:
# # print(f"验证成功!,整数为{num_10},和为{sum_10}")
# sum_10 = 0
#
# else:
# print(f"验证失败!,整数为{num_10},和为{sum_10}")
# num_10 += 1