程序设计导论-python语言实践 第1章程序设计的基本元素(上)

1 .1第一个程序


import stdio
# 1.1 
stdio.writeln('hello,world')



# 1.2 
import sys
import stdio

stdio.write('Hi,')
stdio.write(sys.argv[1])
stdio.writeln('.How are you?')


程序运行结果:

(venv) PS D:\PythonProjects\Day01> python .\helloworld.py          
hello,world
(venv) PS D:\PythonProjects\Day01> python  .\userageument.py  Carol
Hi,Carol.How are you?
 

1.2 内置数据类型

数据类型定义为:一系列值以及为这些值定义的一系列操作方法的集合。

内置数据类型包括:int , float,str,bool。

相关术语:

  基于以下代码:

a = 1234
b = 99
c = a + b

上述代码创建了3个对象,其数据类型为int,分别使用字面量1234,99和表达式a+b,并使用赋值语句将变量a,b和c绑定到其对象。最终结果是变量c被绑定到一个int类型对象,其值为1333。

1 字面量

用于在python代码中直接表示数据类型的值。例如:数字序列1234,99表示int数据类型的值;带小数点的数字序列3.14159表示float数据类型的值;True和False表示bool数据类型的两个取值;包括在引号之间的字符序列如‘helloworld’表示str数据类型的值。

2 运算符

或称操作符,用于在python代码中表示数据类型的运算操作。比如:python 使用运算符+和* 分别表示整数和浮点数的加法运算和乘法运算;使用运算符and,or,not表示布尔运算等。

3标识符

用于在python代码中表示名称。每个标识符是由字母,数字和下划线组成的字符序列,且不能以数字开始。区分大小写,关键字不能在程序中用作标识符。

4变量

变量是对象引用的名称,与数据类型值相关。遵循命名规范来命名变量。多个单词构成的变量名后续单词首字母大写。

5常量

用于表示程序运行过程中数据类型的值保持不变。遵循命名规范:大写字母开头,后根大写字母,数字和下划线。

6表达式

由字面量,变量和运算符组成,python通过对表达式求值返回结果对象。

7 运算符优先级

确定运算的优先级顺序。

8赋值语句

例如:a = 1234   在python中并不表示数学意义上的相等运算,而是表达一种行为,即指示python执行下列两步操作: 将标识符a定义为新变量(假设变量a不存在),将变量a和整数数据类型的值1234相关联。

赋值语句右侧可以是任意表达式,python对表达式求值并把结果和左侧的变量关联起来。

9 非正式跟踪

python如何使用对象表示数据类型的值的更多细节,并在上下文中检查其定义。

10 对象Object

 在python程序中,所有的数据都表示为对象及对象之间的关系。python对象是特定数据类型的值在内存中的表现形式。每个对象由其标志,类型和值三者标识

标志用于唯一标识一个对象,可将标志看作对象在计算机内存中的位置(内存地址)。

类型用于限定对象的行为--对象所表示的取值范围以及允许执行的操作集合。

用于表示对象数据类型的值。

每个对象存储一个值,例如,int类型的对象可以存储值1234,99或1333。

不同的对象可以存储同一个值,例如,一个str类型的对象存储‘hello’,另一个str类型的对象也可以存储值‘hello’。

一个对象可执行且只允许执行其对应数据类型定义的操作,例如,两个int对象可执行乘法运算,但两个str对象则不允许执行乘法运算。

11 对象引用

对象引用指对象标志的具体表示,即存储对象的内存地址。python程序使用对象引用访问对象的值也可直接操作对象引用本身。

描述语句a=1234时,可采用下列表述:

  • 绑定/设定a为[一个int对象,其值为] 1234。
  • 把[指向一个值为]1234[的int对象的对象引用]赋值给a。

同样,当python执行完语句a = 1234后,可采用下列表述:

  • a[被绑定/设定]为[一个int对象,其值为]1234.
  • a为[一个对象引用,指向一个int对象,其值为]1234.
  • [指向一个int对象的对象引用]a[的值]为1234.

因此,当描述语句c=a+b时,可表述为c是a和b的和,c被绑定到一个对象,该对象的值为绑定到a的对象与绑定到对象b的值之和。

在python语言中,定义变量的同时必须同时初始化该变量。

使用一种数据类型时,不仅需要了解其取值范围,还需要了解其对应的操作和调用这些操作的语言机制,以及制定字面量的规则。

字符串

import stdio

ruler1 = '1'
ruler2 = ruler1 + ' 2 ' + ruler1
ruler3 = ruler2 + ' 3 ' + ruler2
ruler4 = ruler3 + ' 4 ' + ruler3

stdio.writeln(ruler1)
stdio.writeln(ruler2)
stdio.writeln(ruler3)
stdio.writeln(ruler4)

D:\PythonProjects\venv\Scripts\python.exe D:\PythonProjects\Day01\ruler.py 
1
1 2 1
1 2 1 3 1 2 1
1 2 1 3 1 2 1 4 1 2 1 3 1 2 1
 

整数

import sys
import stdio

a = int(sys.argv[1])
b = int(sys.argv[2])

total = a +  b
diff  = a -  b
prod  = a *  b
quot  = a // b
rem   = a %  b
exp   = a ** b

stdio.writeln(str(a) + ' +  ' + str(b) + '=' + str(total))
stdio.writeln(str(a) + ' -  ' + str(b) + '=' + str(diff))
stdio.writeln(str(a) + ' *  ' + str(b) + '=' + str(prod))
stdio.writeln(str(a) + ' // ' + str(b) + '=' + str(quot))
stdio.writeln(str(a) + ' %  ' + str(b) + '=' + str(rem))
stdio.writeln(str(a) + ' ** ' + str(b) + '=' + str(exp))

(venv) PS D:\PythonProjects\Day01> python .\intops.py 1234 5
1234 +  5=1239
1234 -  5=1229
1234 *  5=6170
1234 // 5=246
1234 %  5=4
1234 ** 5=2861381721051424
 

浮点数

import sys
import stdio

a = float(sys.argv[1])
b = float(sys.argv[2])

total = a +  b
diff  = a -  b
prod  = a *  b
quot  = a / b
exp   = a ** b

stdio.writeln(str(a) + ' +  ' + str(b) + '=' + str(total))
stdio.writeln(str(a) + ' -  ' + str(b) + '=' + str(diff))
stdio.writeln(str(a) + ' *  ' + str(b) + '=' + str(prod))
stdio.writeln(str(a) + ' / ' + str(b) + '=' + str(quot))
stdio.writeln(str(a) + ' ** ' + str(b) + '=' + str(exp))

(venv) PS D:\PythonProjects\Day01> python .\floatops.py 123.456  78.9
123.456 +  78.9=202.356
123.456 -  78.9=44.556
123.456 *  78.9=9740.6784
123.456 / 78.9=1.5647148288973383
123.456 ** 78.9=1.0478827916671325e+165
 

布尔值

import sys
import math
import stdio

b = float(sys.argv[1])
c = float(sys.argv[2])

dis = b*b - 4.0*c
d = math.sqrt(dis)

stdio.writeln((-b+d)/2.0)
stdio.writeln((-b-d)/2.0)

(venv) PS D:\PythonProjects\Day01> python .\quardratic.py -3.0 2.0
2.0
1.0
(venv) PS D:\PythonProjects\Day01> python .\quardratic.py -1.0 -1.0
1.618033988749895
-0.6180339887498949
(venv) PS D:\PythonProjects\Day01> python .\quardratic.py 1.0 1.0  
Traceback (most recent call last):
  File "D:\PythonProjects\Day01\quardratic.py", line 9, in <module>
    d = math.sqrt(dis)
        ^^^^^^^^^^^^^^
ValueError: math domain error
 

判断给定年份是否为闰年

import sys
import stdio

year = int(sys.argv[1])

isLeapYear = (year % 4 == 0)
isLeapYear = isLeapYear and ((year%100) != 0)
isLeapYear = isLeapYear or ((year %400) == 0)

stdio.writeln(isLeapYear)

(venv) PS D:\PythonProjects\Day01> python .\leapyear.py 2016     
True
(venv) PS D:\PythonProjects\Day01> python .\leapyear.py 1900
False
(venv) PS D:\PythonProjects\Day01> python .\leapyear.py 2000
True
 

1.3 选择结构和循环结构

选择结构if-else语法构造模板

if  <boolean expression>:

        <block of statements>

else:

        <block of statements>

通过流程图可以可视化并深入理解程序的控制流程。

抛掷硬币代码如下:

import random
import stdio

if random.randrange(0,2) == 0:
    stdio.writeln('Heads')
else:
    stdio.writeln('Tails')

while语句语法构造格式为:

while  <boolean expression>:

         <statement 1>

         <statement 2>

         ...

循环体  ,循环测试条件

while语句的循环体中必须包含改变循环控制变量值的语句,以确保循环控制变量最终取值为False,即终止循环。

示例如下:

import stdio

stdio.writeln('1st hello')
stdio.writeln('2nd hello')
stdio.writeln('3rd hello')

i = 4
while i<=10:
    stdio.writeln(str(i)+'th hello')
    i += 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值