python 程序基本语言结构

程序语言特点

语言

程序设计语言,是计算机能够理解和识别用户操作意图的一种交互体系,它按照特定规则组
织计算机指令,使计算 能够自动进行各种运算处理。 程序设计语言也叫 编程语言。
计算机程序,是按照程序设计语言规则组织起来的一组计算 指令。

程序设计语言经历了三个阶段:机器语言→汇编语言→高级语言。

Python 程序不支持自然语言编程方式。自然语言即人与人之间的日常的语言,具有一些歧义性。

嵩天:《全国计算机等级考试二级教程  Python语言程序设计》,教育部考试中心编,北京:高等教育出版社,2022年,第2页。

程序计算思维

人类在认识世界、改造世界的过程中表现三 种基本的思维特征:
以实验和验证为特征的实证思维,以物理学科为代表;
以推理和演绎为 特征的逻辑思维,以数学学科为代表;
以设计和构造为特征的计算思维,以计算机学科为代表。
(嵩天:《全国计算机等级考试二级教程  Python语言程序设计》,北京:高等教育出版社,2022年,第138页。)

python解释器(interpreter)

Python 程序可以在任何安装了 Python 解释器的计算机环境中执行,因此,可以不经修改地实现跨操作系统运行。→平台无关。

嵩天:《全国计算机等级考试二级教程  Python语言程序设计》,教育部考试中心编,北京:高等教育出版社,2022年,第11页。

python 解释器有两个重要工具。

IDLE (integrated development environment) : Python 集成开发环境,编写和调试 Python 代码

pip : Python 第三方库安装工具, 用来在计算机上安装第三方库。

静态语言(C语言)采用编译方式执行,编译是将源代码(高级语言代码)转换成目标代码(机器语言代码)的过程。编译器(compiler)执行编译。

脚本语言(python语言)采用解释方式执行,解释是将源代码(高级语言代码)逐条转换成目标代码(机器语言代码)同时逐条运行目标代码的过程。解释器(interpreter)执行解释。

编译和解释的区别在于编译是一次性地翻译,一旦程序被编译,不再需要编译程序或者源代码。解释则在每次程序运行时都需要解释器和源代码。

这两者的区别类似于外语资料的翻译和同声传译。

(嵩天:《全国计算机等级考试二级教程 Python语言程序设计》,教育部考试中心编,北京:高等教育出版社,2022年,第2-3页。)

python3.x 版本

python 3.x 不兼容 python 2.x 系列。因为二者语法层面已经有了很大不同。  

嵩天:《全国计算机等级考试二级教程  Python语言程序设计》,教育部考试中心编,北京:高等教育出版社,2022年,第5页。

编码和解码

代码如下:

##encode()和decode()
##编码,即将人类语言转换为计算机语言,就是【编码】encode();反之,就是【解码】decode()。它们的用法如下图所表示↓

#编码就是将str类型转换成bytes类型
##将人类语言编码后得到的结果,最前面都有字母b,代表是bytes(字节)类型的数据;\x是分隔符,用来分隔一个字节和另一个字节
##所谓的编码,其实本质就是把str(字符串)类型的数据,利用不同的编码表,转换成bytes(字节)类型的数据

print("朱元虎".encode("utf-8"))
print("朱元虎".encode("gbk"))

print(b'\xe6\x9f\xaf\xe4\xbd\xb3\xe5\xac\xbf'.decode('utf-8'))


#将\x替换为%,就是网址中的搜索条件了,百度搜索“柯佳嬿”↓

Unicode编码

unicode是一种常用国际编码

即可完成。

IPO程序

程序的基本编写方式:

I:input  输入

P :process  处理

O:output  输出

Python语句基础

输入input()  输出print()

input() :获得用户的输入,并返回字符串数据。

符号“< >”说明:从很多名称的事物中提炼出普遍性东西,即从特殊到一般,用符号“<>”表示一般性的东西。

<变量> = input("<提示性文字>")

name=input("请输入你的名字:")
print(name)

print(): 输出运算结果。

输出皮卡丘图像,代码如下:

myPicture="""
     へ     /|
  /\7    ∠_/
  / │   / /
 │ Z _,< /   /`ヽ
 │     ヽ   /  〉
  Y     `  /  /
 イ● 、 ●  ⊂⊃〈  /
 ()  へ    | \〈
  >ー 、_  ィ  │ //
  / へ   / ノ<| \\
  ヽ_ノ  (_/  │//
  7       |/
  >―r ̄ ̄`ー―_

"""
print(myPicture)



print("""
     へ     /|
  /\7    ∠_/
  / │   / /
 │ Z _,< /   /`ヽ
 │     ヽ   /  〉
  Y     `  /  /
 イ● 、 ●  ⊂⊃〈  /
 ()  へ    | \〈
  >ー 、_  ィ  │ //
  / へ   / ノ<| \\
  ヽ_ノ  (_/  │//
  7       |/
  >―r ̄ ̄`ー―_

""")

注意print()括号中的逗号并不会输出,代码如下:

x=520.1314
print(round(x,2),round(x))

print(1,2)

输出结果如下,逗号并没有出现。

520.13 520
1 2

即可完成。

赋值语句

对变量进行赋值的一行代码,被称作赋值语句。

赋值语句中,需要使用“=”。如下代码所示:

x=y=3
print(x,y)

注意,不能是下面这样形式

x=2,y=3 #不是赋值语句,运行时候会出错。

同步赋值的另一 个应用是互换变 的值。 例如:互换两个变量 的值,代码如下:
x,y=y,x

保留字

保留字 (keyword) ,也称关键字,指被编程语内部定义并保留使用的标识符。Python 的保留字也是大小写敏感的 例如, True 是保留字,但 true 不是保留字。

python 保留字如下:

选学内容涉及的保留字共有5个。

None, finally, lambda, pass,with

转义字符

转义字符

除了\n之外,转义字符还有很多,它们的特征就是:反斜杠+想要实现的转义功能首字母。

比如换行\n代表【+newline】;
退格\b代表【+backspace】;
回车\r代表【+return】。
大家可以按照这种方法记住转义字符的含义。

格式框架

缩进:(Tab 键),体现语句之间的逻辑关系。

注释:#

续行符:\

unexpected indent: 缩进错误。

快捷键


常用快捷
Ctrl + [ 、Ctrl + ] 缩进代码
Alt+3 Alt+4 注释、取消注释代码行
Alt+5 Alt+6 切换缩进方式 空格<=>Tab
Alt+/ 单词完成,只要文中出现过,就可以帮你自动补齐。多按几次可以循环选择
Alt+M 打开模块代码,先选中模块,然后按下此快捷键,会帮你打开改模块的py源码供浏览
Alt+C 打开类浏览器,方便在源码文件中的各个方法体之间切换
Alt+FP 打开路径浏览器,方便选择导入包进行查看浏览
F1 打开Python文档,
Ctrl + Space 完成类、方法、变量名称的自动输入,完成类、方法、变量名称的自动录入

逻辑运算

  • 1.异或操作(XOR):当两个操作数不同的时候,结果为1;当两个操作数相同的时候,结果为0。异或操作具有自反性(A XOR A = 0)和交换律(A XOR B = B XOR A)特点。在加密算法、校验和计算、找出数组中出现奇数次的元素等场景中,异或操作被广泛使用。
  • 2.或操作(OR):当两个操作数中有一个为1的时候,结果为1;当两个操作数都为0的时候,结 …
    3.与操作(AND):当两个操作数都为1的时候,结果为1;当两个操作数有一个为0的时候,结果为0。与操作常用于掩码操作、位运算、逻辑判断等场景。

条件逻辑操作: and  , or  ,  xor

三种结构

顺序结构、分支(条件)结构、循环结构。

条件语句

python关系操作符

分支结构的判断条件:能够产生True 或者 False 的语句或者函数。

if elif else

if ...else...
①if 和else所代表的条件是互斥的
②如果不满足if的条件,就执行else的条件

在判断3个或3个以上的条件时,我们就需要借助Python中的多向判断命令:if…elif…else…。
这三者共同构成了多向判断的命令逻辑关系:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令。

第一行的赋值,会按照从上到下的顺序挨个试一遍,看自己满足哪个条件,满足了就不往下走,不满足就继续试,试到出结果为止。

其次,elif的运行本质上和else一样,已经带有其他条件的意思,所以elif后可以不接else。

if if

如下代码所示:

n=eval(input("请输入第一个整数:"))
s = 0
if n >= 7:
    n -= 1
    s = 4
if n < 7:
    n -= 1
    s = 3
print(s)

当输入“7”的时候,输出结果如下:

3

这是因为,这个语句是if …… if……,两个if后的语句都会被执行。

当把第二个if改为elif的时候,如下代码:

n=eval(input("请输入第二个整数:"))
s = 0
if n >= 7:
    n -= 1
    s = 4
elif n < 7:
    n -= 1
    s = 3
print(s)

当输入“7”的时候,输出结果如下:

4

这是因为,这个语句是if …… elif……,程序选择了符合条件的if语句来执行。

if嵌套

import time

print('如果你想拥有无限的力量和能量,那必须夺得力量宝石')

time.sleep(2)

print('如果你想扭曲时空和任意地传送,那必须夺得空间宝石')

time.sleep(2)

print('如果你想任意地修改现实,无视任何宇宙规律,那必须夺得现实宝石')

time.sleep(2)

print('如果你想到达任何一个时间点,无论是古老的年代还是遥远的未来,那必须夺得时间宝石')

time.sleep(2)

print('如果你想控制生者和死者的灵魂,那必须夺得灵魂宝石')

time.sleep(2)

print('如果你想拥有不朽的精神力量并操控任何人的思维,那必须夺得心灵宝石')

time.sleep(2)

print('那么,如果让你来选择的话,你想要获得哪颗宝石呢?')

time.sleep(2)

print('请在以下六个选项【1 力量宝石 ;2 空间宝石;3 现实宝石 ;4 时间宝石;5 灵魂宝石 ;6 心灵宝石;】中,选择你最想获得的宝石吧!')

time.sleep(3)

answer=input('请将对应数字输入在冒号后: ')

if answer=='1':
    print('我告诉你哦,力量宝石保存在山达尔星的新星军团的总部基地')
    time.sleep(3)

elif answer=='2':
    print('空间宝石在洛基手里')
    time.sleep(3)

elif answer=='3':
    print('雷击已将现实宝石交给收藏家保管')
    time.sleep(3)

elif answer=='4':
    print('奇异博士愿意用时间宝石换取钢铁侠的性命')
    time.sleep(3)

elif answer=='5':
    print('必须献祭自己心爱的人才能得到灵魂宝石')
    time.sleep(3)

else:
    print('幻视头上的心灵宝石被绯红女巫摧毁,但可用时间宝石复原')
    time.sleep(3)

实践:判断奇偶

代码如下:

print("hello world")
num=input("请输入一个整数。")
if num%2==0:
    print("是偶数")
else:
    print("是奇数")

即可完成。

实践:机器人对话

import urllib.parse
import hashlib
import time
import random
import string
import requests
import sys
import readline

def curl_md5(src):
    m = hashlib.md5(src.encode('UTF-8'))
    # 将得到的MD5值所有字符转换成大写
    return m.hexdigest().upper()


"""
get_req_sign :根据 接口请求参数 和 应用密钥 计算 请求签名
参数说明
    -pa:接口请求参数
    -apk:应用密钥
返回数据
    -签名结果
"""


def get_req_sign(pa, apk):

    # 1.字典升序排序
    pa_list = list(pa.items())
    pa_list.sort()

    # 2.拼按URL键值对
    tem_str = ''
    for i in range(len(pa_list)):
        if pa_list[i][1]:
            tem_str += (pa_list[i][0] + '=' + urllib.parse.quote(pa_list[i][1]) + '&')

    # 3.拼接app_key
    tem_str += ('app_key=' + apk)

    # 4.MD5运算 + 转换大写,得到请求签名
    sign = curl_md5(tem_str)
    return sign


def get_params(plus_item):

    # 请求时间戳(秒级),用于防止请求重放(保证签名5分钟有效) 
    t = time.time()
    time_stamp = str(int(t))
    # 请求随机字符串,用于保证签名不可预测  
    nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10))

    global se

    app_id = '2127007340'
    app_key = '9Fm2D9tkB4lEjZ89'
    params = {
        'app_id': app_id,
        'time_stamp': time_stamp,
        'nonce_str': nonce_str,
        'question': plus_item,
        'sign': '',
        'session': se
    }

    params['sign'] = get_req_sign(params, app_key)
    return params


def get_content(plus_item):
    # 聊天的API地址    
    url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat"
    # 获取请求参数  
    plus_item = plus_item.encode('UTF-8')
    payload = get_params(plus_item)
    r = requests.post(url, data=payload)

    if r.json()["ret"] == 0:
        print('吴小枫:' + r.json()["data"]["answer"])
    else:
        print('今天我出了一点小问题~快联系助教帮忙解决一下~~')
        sys.exit()


feature_text = ['''
大家好!我是你的聊天机器人吴小枫。
我有问必答,有人会问我“今天深圳天气怎么样?”,也有人问我“你喜欢我吗?”
快来问我问题呀,欢迎来撩!
>''', '''
再来问我点啥吧!我把我知道的都告诉你,嘻嘻!
>''', '''
# 我有点饿了,再和你聊完最后一句,我就要下线啦!你还有什么要问我的?
# >''']

se = str(random.randint(1, 10000))

for i in range(len(feature_text)):
    comment = input(feature_text[i])
    get_content(comment)
    time.sleep(1)

print('\n我走啦,下次见!')

实践:识别图片文字

import requests
from aip import AipOcr

image = requests.get('https://res.pandateacher.com/python_classic.png').content

APP_ID = '16149264'
API_KEY = 'yxYg9r4OuAs4fYvfcl8tqCYd'
SECRET_KEY = 'yWg3KMds2muFsWs7MBSSFcgMQl8Wng4s'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
res = client.basicGeneral(image)
if 'words_result' in res.keys():
    for item in res['words_result']:
        print(item['words'])

else:
    APP_ID = '11756541'
    API_KEY = '2YhkLuyQGljPUYnmi1CFgxOP'
    SECRET_KEY = '4rrHe2BF828bI8bQy6bLlx1MelXqa8Z7'
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    res = client.basicGeneral(image)
    if 'words_result' in res.keys():
        for item in res['words_result']:
            print(item['words'])
    else:
        print(res)

循环语句

for

代码如下:

# -*- coding: utf-8 -*-
"""
Created on Wed Jul  3 12:52:25 2019

@author: cc
"""

week=["Non","Tue","Wed",'Thur',"Fri",'Sat',"Sun"]
i=0
while i<len(week):
    print(week[i])
    i=i+1
print("星期英文缩写")
for name in week:
    print(name)
    
    

利用循环绘制图形:

使用turtle 库的turtle.fd()函数和turtle.left()函数绘制一个边长为200像素的正方形及一个紧挨四个顶点的圆形。

代码如下:

import turtle
turtle.pensize(2)
for i in range(4):
    turtle.fd(200)
    turtle.left(90)
turtle.left(90)
turtle.circle(100*pow(2,0.5))

生成的图形如下:

该图并非所求图形。

修改代码如下:

import turtle
turtle.pensize(2)
for i in range(4):
    turtle.fd(200)
    turtle.left(90)
turtle.circle(100*pow(2,0.5))#长度为圆的半径。

生成图形如下:

分析原因,首先,乌龟转向的角度需要重新调整。更新代码:

import turtle
turtle.pensize(2)
for i in range(4):
    turtle.fd(200)
    turtle.left(90)
turtle.right(45)
turtle.circle(100*pow(2,0.5))

生成图形如下:

即可完成。

while 

当型 while 

a=int(input("Please input a number:"))
num=0
while num<a:
    num+=1
    print("Study"+str(num))

直到型 while True

"""while True:
    do_something
    if condition:
        break
"""
a,b=map(int,input("Please input two number:").split())
if a<=b:
    c=a
    a=b
    b=c
    while True:
        m=a-b
        if m<=b:
            break
else:
    while True:
        m=a-b
        if m<=b:
            break
print(m,"is YuShu")


while 循环,语句如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Jul  2 22:09:33 2019

@author: cc
"""

count=int(input("请输入倒计时时间:"))
while count>0:
    print(count)
    count=count-1
print("发射火箭!")

猜数游戏,代码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Jul  2 23:02:09 2019

@author: cc
"""
import random
number=random.randint(0,20)
count=0
while True:
    a=int(input('请输入0到20之间你猜测的数字:'))
    count=count+1
    if a==number:
        break
    elif a>number:
        print("你猜的数字大了。")
    else:
        print("你猜的数字小了。")
print('猜中了,你用了{}次!'.format(count))

多个元素并列求和,代码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Jul  2 23:37:21 2019

@author: cc
"""
sum=0
count=0
a=[]
while True:
    number=int(input("求数据偶数和,请输入整数,如果输入-1,则表示结束:"))
    if number==-1:
        break
    elif number % 2==1:
        continue
    else:
        a.append(number)
        sum=sum+number
        count=count+1
print("输入偶数如下列表:",a)
print("共有偶数个数{}个,其和为{}".format(count,sum))


即可完成。

continue

cont inue 语句只结束本次循环,不终止整个循环的执行。
代码如下:
while True:
    z=input("请输入航天员体重值,输入Q或者q,则退出:")
    if z.upper()=="Q":break
    elif float(z)==False:print("输入格式有误。")
    else:
        diqiuz=float(z)+10*0.5
        yueqiuz=diqiuz*0.165
    print(f"地球重值{diqiuz}kg,月球重值{yueqiuz}kg。")
    continue
print("end")

可作参考。

break

break 具备结束整个当前循环的能力。

else

for 或者 while else 搭配使用时,能够执行 else 对应语句块的情况是:仅循环正常结束时
代码举例如下,循环正常结束。
for i in range(1,10):
    if i ==11:
        break
else:print(911)#输出911

循环被打断,break,这个时候else语句并没有被执行。

for i in range(1,10):
    if i ==8:
        break
else:print(911)

缩进

        python函数代码中,缩进占据有重要地位,位置不同,影响的结果也不同。

如下代码所示:

for c in "python abc":
    if c =="n":
        break
    print(c)
    

输出结果为:

p
y
t
h
o

但是,如果print(c)缩进一个,结果则截然不同。如下代码所示:

for c in "python abc":
    if c =="n":
        break
        print(c)
    

这个时候,程序并没有输出。因为print(c)是在if句子中,受到if控制;而不是在for循环语句中。不受到for的控制,即使for循环了很多,也不会print(c)。

即可完成。

斐波那契

循环案例,代码如下:

for i in range(1,10):
    for j in range(1,i+1):
        print('{}x{}={}\t'.format(i,j,i*j),end="")
    print()
print()
for i in range(1,10):
    for j in range(i,10):
        print('{}x{}={}\t'.format(i,j,i*j),end="")
    print()


#斐波那契数列
'''
0,1,是前两项。从第三项开始,每一项等于前两项和。

'''

#第一项和第二项
a1=0
a2=1
count=2

#判断输入多少项目
number=int(input("你需要几项?请输入:"))
if number<=0:
    print("请输入正整数。")
elif number==1:
    print("斐波那契数列:0")
else:
    print(a1,",",a2,end=", ")
    while count<number:
        an=a1+a2
        a1=a2
        a2=an
        print(an,end=", ")
        count+=1
    

即可完成。

绘制螺线

import turtle
import time


myjiaodu=int(input("请输入旋转角度:"))
turtle.tracer(False)
#turtle.speed("fastest")#画笔速度
turtle.pensize(2)
turtle.bgcolor("white")
colors=["red","yellow","blue","purple"]


for i in range(400):    
    turtle.forward(2*i)
#    turtle.color(colors[i%4])
    turtle.left(myjiaodu)

turtle.done()

输出汉字大写数字的章节数

目的:输出汉字大写数字的章节数,为PDF文档作书签。

idict={}
numList=[str(i) for i in range(0,10)]#需要用字符串的形式,这样才能把各个位数上的数字转化为汉语大写形式
bstr="〇一二三四五六七八九"
xy=zip(numList,bstr)
for i in xy:
    idict[i[0]]=i[1]#{字符串数字:汉字大写数字;}构成字典对应关系

mydict={}
for i in range(1,101):
    numStr=str(i)
    hysz=""#汉语数字
    for m in numStr:
        hysz+=idict[m]#字典常用格式
    mydict[str(i)]=hysz

wfile=open("wfile.txt","w",encoding="utf-8")
for (x,y) in mydict.items():
    print("卷",y,sep="",file=wfile)
wfile.close()
    

分析如下:

{字符串数字:汉字大写数字;}构成字典对应关系。

把数字转化为字符串,158转化为“1”、“5”、“8”,依次取其对应的汉字大写数字。
   

构造九九乘法表

构造九九乘法表,可以运用循环结构,也可以构造一个函数。

#先弄出每一行。
def printLine(N):
    for i in range(1,N+1):
        print(f"{i}*{N}={i*N}",end=' ',sep=' ')
    print()
    

for N in range(1,9):
    printLine(N)

如下代码也可以,略微整齐形式。

#9*9列表的处理。调试一下,很快就做出来了,并不难。注意第二个循环的n在前面
for m in range(1,10):
    print("        "*(9-m),sep=' ',end='')
    for n in range(1,m+1):
        print(f'{n}*{m}=',str(m*n).center(2),sep=' ',end=' ')

    print()


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值