python的学习笔记01_2变量 常量 注释 用户交互 格式化输出

变量是什么?

变量的作用 

Variables are used to store information to be referenced and manipulated in a computer program. They also provide a way of labeling data with a descriptive name, so our programs can be understood more clearly by the reader and ourselves. It is helpful to think of variables as containers that hold information. Their sole purpose is to label and store data in memory. This data can then be used throughout your program.

变量用于在计算机程序中存储要引用和操作的信息。它们还提供了用描述性名称标记数据的方法,因此读者和我们自己可以更清楚地理解我们的程序。将变量看作容器来保存信息是很有帮助的。他们唯一的目的是在内存中标记和存储数据。这些数据可以在整个程序中使用。

变量定义规范

声明变量

name = "Alex Li"

变量定义规则

  1. 变量名只能是 字母、数字或下划线的任意组合
  2. 变量名的第一个字符不能是数字
  3. 以下关键字不能声明为变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

定义方式

驼峰体

AgeOfOldboy = 56

下划线

age_of_oldboy = 56

定义变量不好的方式举例

  • 变量名为中文、拼音
  • 变量名过长
  • 变量名词不达意

常量

常量即指不变的量,或在程序运行过程中不会改变的量

在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量

 

 注释

代码注释分单行和多行注释,单行注释用#,多行注释可以用三对双引号""" """

代码注释原则:

  1. 不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可
  2. 注释可以用中文或英文,但绝对不要拼音噢

 

 

用户交互

# 将用户输入的内容赋值给 name 变量
name = input("请输入用户名:")
print (name)     # 打印输入的内容

python2中有raw_input()和input()两种方式,第一种输出结果类型是str,第二种输出结果是int;python3中只有input()类型,输出结果类型是str

 

 

格式化输出

现有一练习需求,问用户的姓名、年龄、工作、爱好,然后打印成以下格式

------------ info of Eva_J -----------
Name : Eva_J
Age : 18
job : Teacher
------------- end -----------------

你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势

只需要把要打印的格式先准备好, 由于里面的一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦

 
name = input( " Name: " )
age = input( " Age: " )
job = input( " Job: " )
hobbie = input( " Hobbie: " )
 
info = '''
------------ info of %s ----------- #这里的每个%s就是一个占位符,本行的代表后面拓号里的name
Name : %s #代表name
Age : %s #代表age
job : %s #代表job
Hobbie: %s #代表hobbie
------------- end -----------------
''' %(name,name,age,job,hobbie) # 这行的%号就是把前面的字符串与拓号后面的变量关联起来
 
print (info) 

%s就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦

age     : %d

我们运行一下,但是发现出错了。

说%d需要一个数字,而不是str, what? 我们明明输入的是数字呀,22,22呀。

不用担心,不要相信你的眼睛,我们调试一下,看看输入的到底是不是数字呢?怎么看呢?查看数据类型的方法是什么来着?type()

name = input( " Name: " )
age = input( " Age: " )
 print (type(age))
执行输出是

Name:Alex
Age: 22
< class  ' str ' > # 怎么会是str 
Job:IT
....

让我大声告诉你,input接收的所有输入默认都是字符串格式!

要想程序不出错,那怎么办呢?简单,你可以把str转成int

age = int( input( " Age: " ) )
 print (type(age))

肯定没问题了。相反,能不能把字符串转成数字呢?必然可以,str( yourStr )

格式化输出

1.%s替换

2.format替换字典

3.%()s字典的值替换

4.f"内容{}内容"

 

 

1.总结了一些简单基本的输出格式化形式以及函数format函数基本使用形式。

字符串格式化代码:

 

格式描述
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中

 

 1 '''
 2 可以指定所需长度的字符串的对齐方式:
 3 < (默认)左对齐
 4 > 右对齐
 5 ^ 中间对齐
 6 = (只用于数字)在小数点后进行补齐
 7 '''
 8 print('1:\t|{0:>10},'.format('wangyu'))
 9 print('2:\t|{0:4.2f}'.format(3.1415926))
10 print('3:\t|', format(3.1415926, '<10.2f'))
11 print('4:\t|{0:<10},{1:<15}'.format('wangyu', 3.1415926))
12 print('5:\t|User ID: {uid} Last seen: {last_login}'.format(uid='root', last_login='5 Mar 2008 07:20'))
13 
14 '''格式化指示符可以包含一个展示类型来控制格式。
15 例如,浮点数可以被格式化为一般格式或用幂来表示。
16 'b' - 二进制。将数字以2为基数进行输出。
17 'c' - 字符。在打印之前将整数转换成对应的Unicode字符串。
18 'd' - 十进制整数。将数字以10为基数进行输出。
19 'o' - 八进制。将数字以8为基数进行输出。
20 'x' - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
21 'e' - 幂符号。用科学计数法打印数字。用'e'表示幂。
22 'g' - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
23 'n' - 数字。当值为整数时和'd'相同,值为浮点数时和'g'相同。不同的是它会根据区域设置插入数字分隔符。
24 '%' - 百分数。将数值乘以100然后以fixed-point('f')格式打印,值后面会有一个百分号。
25 '''
26 
27 print('6:\t|{0:b}'.format(3))
28 print('7:\t|{0:c}'.format(3))
29 print('8:\t|{0:d}'.format(3))
30 print('9:\t|{0:o}'.format(3))
31 print('10:\t|{0:x}'.format(3))
32 print('11:\t|{0:e}'.format(3.75))
33 print('12:\t|{0:g}'.format(3.75))
34 print('13:\t|{0:n}'.format(3.75))  # 浮点数
35 print('14:\t|{0:n}'.format(3))  # 整数
36 print('15:\t|{0:%}'.format(3.75))
37 
38 # 输入形式的控制format
39 a = int(input('a:'))
40 b = int(input('b:'))
41 print('16:\t|%*.*f' % (a, b, 1.1415926))
42 
43 print('17:\t|{array[2]}'.format(array=range(10)))
44 print('18:\t|{attr.__class__}'.format(attr=0))
45 print('19:\t|{digit:*^ 10.5f}'.format(digit=1.0 / 3))
46 
47 '''
48 类和类型可以定义一个__format__()方法来控制怎样格式化自己。
49 它会接受一个格式化指示符作为参数:
50 '''
51 
52 
53 def __format__(self, format_spec):
54     if isinstance(format_spec, unicode):
55         return unicode(str(self))
56     else:
57         return str(self)

 

 

2.

 1 #使用str.format()函数
 2 
 3 #使用'{}'占位符
 4 print('I\'m {},{}'.format('Hongten','Welcome to my space!'))
 5 print('#' * 40)
 6 
 7 #也可以使用'{0}','{1}'形式的占位符
 8 print('{0},I\'m {1},my E-mail is {2}'.format('Hello','Hongten','hongtenzone@foxmail.com'))
 9 #可以改变占位符的位置
10 print('{1},I\'m {0},my E-mail is {2}'.format('Hongten','Hello','hongtenzone@foxmail.com'))
11 print('#' * 40)
12 
13 #使用'{name}'形式的占位符
14 print('Hi,{name},{message}'.format(name = 'Tom',message = 'How old are you?'))
15 print('#' * 40)
16 
17 #混合使用'{0}','{name}'形式
18 print('{0},I\'m {1},{message}'.format('Hello','Hongten',message = 'This is a test message!'))
19 print('#' * 40)
20 
21 #下面进行格式控制
22 import math
23 print('The value of PI is approximately {}.'.format(math.pi))
24 print('The value of PI is approximately {!r}.'.format(math.pi))
25 print('The value of PI is approximately {0:.3f}.'.format(math.pi))
26 
27 table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
28 for name, phone in table.items():
29     print('{0:10} ==> {1:10d}'.format(name, phone))
30 
31 table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
32 print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ''Dcab: {0[Dcab]:d}'.format(table))
View Code

 

 

 3.字典格式化插入

dic = {'name':'老男孩','age':45}
'%(name)s,%(age)s' % dic

 

 

4.f"{}" 双引号中是所有需要包含的内容,{}中是格式化替换的内容

a ,b = "456" ,"123"
c = f'I\'m {a},{b}'
print(c)

 

 

posted @ 2018-11-26 19:28  cheng_z  阅读(181)  评论(0编辑  收藏  举报