Java教程

day2

本文主要是介绍day2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

day2

君埋泉下泥销骨,我寄人间雪满头。


语言漫话

寻根溯源

冯·诺依曼结构

如今大多数的计算机硬件系统仍然是基于冯·诺依曼结构建立的。
冯·诺伊曼结构主要有两个方面

  • 存储设备与中央处理器分开
  • 数据以二进制方式编码

因此,计算机的硬件系统通常由五大部件构成,包括:运算器,控制器,存储器,输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说的中央处理器,它的功能是执行各种运算和控制指令以及处理计算机软件中的数据。我们所说的程序就是指令的集合,程序就是将一系列的指令按照某种方式组合到一起,然后通过这些指令去控制计算机来做我们想让他做的事情。

变量和类型

变量本质上就是计算机的一块内存空间,一般具有读写操作。计算机处理的数据有许多种,除了数值之外,还包括文本,图形,音频,视频等多种数据。python中的数据类型有许多种,与其他语言一样,用户也可以自定义新的数据类型。接下里,先介绍几个新伙伴。

  • 整型:python中可以处理任意大小的整数,(python2中有intlong两种类型的整数区分,但这种区分在python3中就消失了,最后整数就只剩下了int老大哥留下来了,因此以后写大整数加减乘除的时候,知道用什么了吧),在python中二进制,八进制,十进制,十六进制表示的方法如下(这里统一表示16)
进制 表示方法
二进制 0b开头,0b10000
八进制 0o开头,0o20
十进制 直接写就可以了,16
十六进制 0x开头,0x10
  • 浮点型:浮点数就是小数,与定点数相对,定点数就是小数点是固定的,浮点数就是小数点是不固定,因为浮点数的表示方式采用的是科学计数法,因此小数点的位置是可以变化的。
a = 1.234 # 定点数
b = 12e34 # 浮点数
  • 字符串型:字符串是以单引号or双引号or三引号括起来的任意文本,比如'abc'"abc"'''abc'''"""abc""",当然还包括原始字符串r'\n'(这时候输出的不是换行,而是原先的文本内容\n,也就是说会输出原本的内容,而不是转义过后的内容),字节字符串,Unicode字符串有兴趣的可以自行了解。注意这之中只有三引号是支持多行形式,其他不行的。
  • 布尔型:python中只有TrueFalse两种值。注意这边的大小写,python是对大小写敏感的语言。当然也可以通过返回值为布尔值的表达式来进行赋值,比如1 < 2或者1 == 2等。
  • 复数型1 + 1j,这种形式就是复数的表示方式,注意这边的虚数单位使用j而不是用i,其他的表达方式与以前学过的数学知识匹配。

变量命名

你的名字是我读过最短的情诗

变量的命名遵循以下硬性规则(给解释器大哥一个面子):

  • 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线组成,数字不能开头
  • 大小写敏感(大写的A和小写的a是不一样的变量)
  • 不要跟关键字(有特殊含义的单词)和系统保留字(如函数、模块等的名字)冲突

人为要求如下(可以不遵守,只是建议)

  • 用小写字母拼写,多个单词用下划线连接
  • 受保护的实例属性用单个下划线开头
  • 私有的实例属性用两个下划线开头

当然如今合作编程独占鳌头,所以变量命名做到见名知意也是非常重要的。

变量的使用

python和别的语言不一样,不需要再为记不住变量类型而烦恼了,其自动匹配变量类型。也就是变量的定义加声明直接a = 123就是定义了一个整型变量a,前面不用加int。所以,如果a = 1, b = 2, a/b在python中输出的结果是0.5可不是像C中的0。

a = 321
b = 123
print(a + b)
print(a - b)
print(a * b)
print(a / b)

在python中可以使用type函数对变量的类型进行检查。这里的函数概念是通用的,笔者这里不表。

a = 100
b = 12.345
c = 1 + 5j
d = 'hello, world'
e = True
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))
"""
output:
<class 'int'>
<class 'float'>
<class 'complex'>
<class 'str'>
<class 'bool'>
"""

进行类型转换,可以使用python中内置的函数对变量类型进行转换。注意由于python中的变量类型不是我们定义的,所以如果是

a = 123
b = 12.3
a = b

这里可不会像C中进行强制类型转换,而是直接将a也变成12.3,所以python中的类型转换推荐使用python自带的类型转换函数,否则容易出现一些奇怪的错误。

函数 作用
int() 将一个数值或字符串转换成整数,可以指定进制(这里多是字符串指定什么进制转换成十进制)
float() 将一个字符串转换成浮点数
str() 将指定的对象转换成字符串形式,可以指定编码
chr() 将整数转换成该编码对应的字符串(一个字符)
ord() 将字符串(一个字符)转换成对应的编码(整数)
bool() 转换成布尔类型
complex() 转换成复数类型

填鸭来了:input()表示从键盘读取数据,括号中可以填入字符串,表示输出到输出设备上,作为提示

a = int(input('a = '))
b = int(input('b = '))
print('%d + %d = %d' % (a, b, a+b))
print('%d - %d = %d' % (a, b, a-b))
print('%d * %d = %d' % (a, b, a*b))
print('%d / %d = %f' % (a, b, a/b))
print('%d // %d = %d' % (a, b, a//b))
print('%d %% %d = %d' % (a, b, a%b))
print('%d ** %d = %d' % (a, b, a**b))

注意:看到input()就会了解到python对于字符串的优待了。其首先是将键盘上输入的信息转化为字符串形式存储,如果没有类型转换,那么默认就是str类型,所以使用input一般要配套使用前面的类型转换函数。这边前面的是占位符,和C/C++的类似,这里不再赘述。注意python中的格式化输出语句的格式,是通过%来分割的,不是,,逗号是用来分割语句的,而所需要占位的数据都是写在小括号中,通过逗号分离。

ps:这里的//是python中将整除和除法分离出来的产物,//代表整除,/代表正常的除法,**表示幂运算。

运算符

老生常谈的大魔王级别的运算符优先级表格(这年头能不能用括号区分优先级了)

运算符 描述
[],[:] 下标,切片
** 指数
~,+,- 按位取反,正负号
*,/,%,// 乘,除,模,整除
+,- 加,减
>>,<< 右移,左移
& 按位与
^,| 按位异或,按位或
<=,<,>,>= 小于等于,小于,大于,大于等于
==,!= 等于,不等于
is,is not 身份运算符
in,not in 成员运算符
not,or,and 逻辑运算符
=,+=,-=,*=,/=,%=,//=,**=,&=,|=,^=,>>=,<<= 各种赋值运算符

建议用括号来保证运算的执行顺序

赋值运算符

就是将右边的值赋值给左边,也是区分===的开始

a = 10
b = 3
a += b
a *= a + 2
print(a)

a *= a + 2因为+的优先级高于*=,没办法,赋值运算符的优先级是最低的,最卑微的。因此该语句实际上等价于a = a * (a + 2)

比较运算符和逻辑运算符

比较运算符所组成的表达式的值是布尔类型的,包括==,!=,<,<=,>,>=,注意这边判断是否相等不是数学上的=,而是==

逻辑运算符有三个,and,ornot

  • and就是与运算,只有左右两边的布尔值都是True的时候表达式才会返回True,否则返回False。如果and左边的布尔值是False的时候,那么无论右边是什么值,其最终的结果都是False,因此在做运算的时候右边的值会被跳过(短路处理),即and左边的值为False的时候,右边的表达式根本不会执行,这点和C/C++非常相似。
  • or就是或运算,只有左右两边的布尔值都是False的时候,最终的结果才会是False,否则都为True。or一样也有短路运算,只要左边的布尔值是True,那么右边的表达式一样也根本不会执行。
  • not就是非运算。其只在后面添加一个布尔值,也就是单目运算符,作用就是返回和后面的布尔值相反的布尔值,比如后面是True,返回就是False。
a = 1==1
b = 3 > 2
c = 2 < 1
d = a and c
e = a or c
f = not(1 != 2)
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
'''
output:
True
True
False
False
True
False
'''

课后练习

  • 这里%.1f和C/C++中的占位符的含义一样,也是输出小数,保留小数点后一位
  • 关于print(f'{f:.1f}')输出的解释:在字符串之前添加f表示格式化字符串,也就是此时我们原来的占位符此时可以替换成大括号,大括号包围的区域就是所需要替换的区域。
  • 跨行写代码可以借助()也可以借助'\',但是对于\\一定要是有一个运算符在前面否则会报错或者得到错误答案,因为此时系统不认为你在跨行写表达式

关于str类型的补充

函数 功能
len() 获取字符串的长度,len(str)
title() 将字符串中每个单词的首字母变成大写,str.title()
upper() 将字符串中的字母全部变成大写,str.upper()
lower() 将字符串中的字母全部变成小写,str.lower()
startwith(str1) 字符串是不是以str1开头的,str.startwith(str1)
endwith(str1) 字符串是不是以str1结尾的,str.endwith(str1)

这里字符串和字符串可以直接进行拼接,即str1 + str2就可以了,如果str * int,那么就是str重复int遍

这篇关于day2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!