Python的第二堂课(2)
一、初探python
print('Hello,靓仔!')
不得不说,这句话还是so real的(逃
二、Python中的变量
1.什么是变量?(what)
量:记录某种现实世界中事物的某种状态;
变:事物的某种状态是可以发生变化的。
2.为何要用变量?(why)
为了让计算机能够像人一样记录下来事物的某种状态
3.如何用变量?(how)
原则:先定义,后引用。
- 那么如何先定义变量呢?
eg:age=18
从上面的例子中可以看出,定义变量主要由三部分组成:
①变量名:是访问到值的唯一方式;
②赋值符号=:将变量值的内存地址绑定给变量名;
③变量的值:用来表示事物的某种状态,使我们要储存的数据。
- 后引用:只有在变量定义后,我们才可以引用变量,否则一切都是镜花水月---空。
4.变量名的命名:
大前提:变量名应该对值具有描述性的效果。
- 变量名只能是字母、数字或者下划线的任意组合;
- 变量名的第一个字符不能是数字;
- 关键字不能作为变量名
Python3中共有33个关键字,不能作为变量名使用:False,None,True,
class,finally,nonlocal,return,continue,for,lambda,try,def,from,is,while,and,
del,global,not,with,as,elif,if,or,yield,assert,else,import,pass,break,except,in,raise。
(注意前三个首字母为大写!)
- 命名风格主要有两种:
①驼峰体:OldboyOfAge=66
②纯小写字母+下划线:oldboy_of_age=66
推荐用第二种命名方式。
三、与用户交互
与用户交互,无非两点:用户输入与程序输出。
用户输入:
name=input('请输入用户名:')
程序输出:
print(name) # 输出上面的用户名
四、今天作业的代码(格式化输出)
# !/usr/bin/python3
# -*-coding:UTF-8-*-
# 格式化输出练习
name=input('请输入您的名字:')
while True:
age = input('请输入您的年龄:')
if age.isdigit():
break
else:
print('输入错误!请重新输入!')
sex=input('请输入您的性别:')
job=input('请输入您的工作:')
hobby=input('请输入你的一项爱好:')
info="""
------------info of %s---------
Name: %s
Age: %s
Sex: %s
Job: %s
Hobby: %s
--------------end--------------
"""%(name,name,age,sex,job,hobby)
print(info)
One more thing:
字符串的格式化:
① 字符串的格式化使用百分号(%)实现。(%也可以用作模(求余数)操作符)。
>>> print('hello,%s'%'world')
hello,world
>>> print('小伙今年%s岁了'%18)
小伙今年18岁了
%左边放置了一个待格式化的字符串,右边放置的是希望格式化的值,格式化的值可以是一个字符串或者数字。
格式化字符串的%s部分称为转换说明符,标记了需要放置转换值的位置,通用术语为占位符。
字符串格式化符号:
符号 |
描述 |
%c |
格式化字符及其ASCII码 |
%s |
格式化字符串 |
%d |
格式化整数 |
%u |
格式化无符号整数 |
%o |
格式化无符号八进制数 |
%x |
格式化无符号十六进制数 |
%X |
格式化无符号十六进制数(大写) |
%f |
格式化浮点数字,可指定精确度 |
%e |
用科学记数法格式化浮点数 |
%E |
作用同%e,用科学记数法格式化浮点数 |
%g |
%f和%e的简写 |
%G |
%f和%E的简写 |
%p |
用十六进制数格式化变量的地址 |
使用%f时,若不指定精度,则默认输出6位小数。
>>> print('圆周率的值为:%f'%3.14)
圆周率的值为:3.140000
>>> print('圆周率的值为:%.2f'%3.14)
圆周率的值为:3.14
指定2位小数的格式为%.2f。即为英文格式下的点加上希望保留的小数位数。
在python中,字符串中的%是转换说明符,如果要输出%,就需要格式化字符串%,从而需要使用%%。如:
>>> print('经济增长为%.2f%%'%1.23)
经济增长为1.23%
功能类似于下例:
>>> print('输出百分号%s'%'%')
输出百分号%
② 字符串格式化元组:
格式化操作符的右操作数可以是任何元素。
如果右操作数是元组,其中每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。例如:
>>> print('今年是%s年,我%d岁了,又变%s了。'%(2018,18,'帅'))
今年是2018年,我18岁了,又变帅了。
由上例可知,在有多个占位符的字符串中,可以使用元组传入多个格式化值。如果需要转换的元组作为转换表达式的一部分存在,就必须将他们用圆括号括起来,否则会出错。
注意:如果使用列表或其他序列代替元组,序列就会被解释为一个值。只有元组和字典可以格式化一个以上的值。
基本转换说明符:
(1)%字符:标记转换说明符开始;
(2)转换标志(可选):-表对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值位数不够时用0填充。
(3)最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,宽度就会从值元组中读出。
(4)点(.)后跟精度值(可选):如果转换的是实数,精度值表示出现在小数点后的位数;如果转换的是字符串,该数字就表示最大字段宽度;如果是*,精度就会从元组中读出。
(5)转换类型:参见表:字符串格式化符号。
1.简单转换:
>>> print('圆周率π的值:%.2f'%3.14)
圆周率π的值:3.14
>>> print('石油价格为:$%d'%96)
石油价格为:$96
2.字段宽度和精度:
字段宽度是转换后的值所保留的最小字符个数,精度是数字转换结果中应该包含的小数位数或字符串转换后的值所能包含的最大字符个数。
>>> print('圆周率的值为:%10f'%3.141593) #字段宽度为10
圆周率的值为: 3.141593 #字符串宽度为10,被字符串占据八个位置,剩余两个空格
>>> print('保留2位小数,圆周率的值位:%10.2f'%3.1415923)
保留2位小数,圆周率的值位: 3.14
>>> print('保留2位小数,圆周率的值位:%.2f'%3.1415923)
保留2位小数,圆周率的值位:3.14
>>> print('字符串精度获取:%.5s'%('hello world')) #打印字符串前五个字符
字符串精度获取:hello
字段宽度和精度都是整数,并通过点号(.)分隔。两个都是可选参数,如果给出精度,就必须包括点号(.)。
可以使用*作为字段宽度或精度(或两者都用*),数值会从元组中读出
>>> print('从元组中获取字符串精度:%*.*s'%(10,5,'hello world'))
从元组中获取字符串精度: hello #输出字符串宽度为10,精度为5
>>> print('从元组中获取字符串精度:%.*s'%(5,'hello world'))
从元组中获取字符串精度:hello #输出精度为5
3.符号、对齐和0填充
标表,在字段宽度和精度之前可以放置一个标表,可以是零、加号、减号或空格。
零表示用0进行填充:
>>> print('圆周率为:%010.2f'%3.141593)
圆周率为:0000003.14
减号(-)用来左对齐数值(下例中数字右侧多出了额外的空格,字符串宽度还是10个):
>>> print('圆周率为:%10.2f'%3.141593)
圆周率为: 3.14
>>> print('圆周率为:%-10.2f'%3.141593)
圆周率为:3.14
空格(“ ”)表示在正数前加上空格,可以用于对齐正负数。下例中第一个-5前面有空格。
>>> print(('% -5d'%10)+'\n'+('%-5d'%-10))
10
-10
>>>
加号(+)表示无论是正数还是负数都表示出符号:
>>> print(('宽度前加加号:%+5d'%10)+'\n'+('宽度前加加号:%+5d'%-10))
宽度前加加号: +10
宽度前加加号: -10
最新文章
- 关于C#消息调度(作业日志)
- xtrabackup_binlog_pos_innodb 和 xtrabackup_binlog_info
- jquery插件-表单验证插件-validator对象
- Angular - ng-repeat高级用法
- hyperstart 容器创建流程分析
- Change Or Set Report Object Property At Run Time In Oracle Forms Using Set_Report_Object_Property Command
- POJ 3494 Largest Submatrix of All 1’s(最大全1子矩阵)
- you need to be root to perform this command linux
- 利用python建表
- POJ 2778 DNA Sequence (AC自动机,矩阵乘法)
- 【转】基于DM8168的视频智能分析系统的设计方案
- Ecstore中如何调用发起Ajax请求
- Ice_cream's world I--hdu2120
- HelloX项目github协同开发指南
- ios7 UIScrollView 尺寸问题
- Github上四种Lisp方言的流行度 | 肉山博客 (Wenshan's Blog)
- 大文件拆分问题的java实践(附源码)
- 201521123039 《java程序设计》第十一周学习总结
- 【BZOJ1834】 网络扩容
- iOS设备中垂直同步开启后的帧率计数