Python-用户交互-格式化输出

Python-用户交互-格式化输出

1.交互输入

  • 类似银行的ATM机(就是一台计算机),用户要取钱就需要我们为其编写程序来运行,需要用户输入密码金额等信息与ATM机交互

1.1.用户与程序交互的实现方法

  • 使用下面这几行代码就可以实现上面的功能:
username=input("username:")
password=input("password:")
print(username,password)
-------------------------
username:xiaoming
password:123456
xiaoming 123456
-------------------------

1.2.Python 不同版本间交互的区别

1.2.1.在 python3 中

  • input:用户输入任何值,都存成字符串类型

1.2.2.在 python2 中

  • input:用户输入什么类型,就存成什么类型
  • raw_input:等于 python3 的 input
# 数据类型转换
age = input("Age:")        # 默认所有的数据均认为是字符串
print(type(age))           # 打印变量的数据类型
age = int(input("Age:"))    # integer 整形,强制定义age为整形变量
print(type(age),type(str(age)))
print(type(age))

# (2.x) raw_input = input (3.x)
# (2.x) input = xiaoming       # 输入的是变量,如果变量未定义,会报错,在3.x中已经去掉这个功能
# (2.x) input = "xiaoming"     # 输入的是字符串

2.格式化输出

2.1.需求引入

  • 普通的输出方式:比如要求用户输入用户名和年龄,然后打印如下格式
  • 很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的位置
  • 而且数字也必须经过 str (数字)的转换才能与字符串进行拼接。
My name is xiaoming ,my age is 25
  • 比较秀的效果:格式化输出结果
------ info of xiaoming ------
Name:    xiaoming
Age:     25
Job:     it
Salary:  5000
------ END ------

2.1.占位符的类型

  • %s 字符串占位符
  • %d 数字占位符
  • %f 浮点数

2.1.1.字符串占位符 %s

  • %s 可以接收字符串,也可接收数字
print('My name is %s , my age is %s' %('xiaoming',25))
----------------------------
My name is xiaoming , my age is 25
----------------------------

2.1.2.数字占位符 %d

  • %d 只能接收整数,数字
print('My name is %s , my age is %d' %('xiaoming',25))
----------------------------
My name is xiaoming , my age is 25
----------------------------

# 错误的示例:这里的 25 是字符串类型
print('My name is %s,my age is %d' %('xiaoming','25'))
----------------------------
Traceback (most recent call last):
  File "d:/workspace/zsdocs/运维开发/python.zs/python_docs/python_base/test.py", line 9, in <module>
    print('My name is %s,my age is %d' %('xiaoming','25'))
TypeError: %d format: a number is required, not str
----------------------------

2.1.3.浮点数-小数 %f

  • %f 可以保留 6 位小数的精度

2.1.4.注意点

  • 1.需要预置某些变量的数据类型,防止用户输入错误类型的数据,例如,如果是数字可能需要转换数据类型为 int,便于可以进行一些运算,如 age 和 salary 应该是数字
  • 2.如果没有在前面判断输入的数据的类型,可以使用占位符来规范数据的类型,例如,占位符改成 %d 则 input 时只能输入数字,否则会报错
  • 3.%s 可以接收数字,但是会存储为字符串类型,可以对其进行数据类型的转换,如果需要先检测输入的是否为数字,可以用 isdigit() 方法
---------------------------
if salary.isdigit():
    salary = int(salary)        # 转换为数字类型
else:
    print("you must be input digit for Salary")
    exit("bye bye")             # 退出程序
---------------------------

2.2.常用的格式化输出方法

2.2.1.占位符方法

  • 常用
  • 检测验证数据类型
print("格式化输出-占位符方法")
name = input("name:")
age = int(input("age:"))
job = input("job:")
salary = int(input("salary:"))

if salary.isdigit():
    salary = int(salary)
else:
    exit("you must input digit for Salary")

print("普通格式输出:\n",name,age,job,salary)

info1 = '''
==== info of %s ====
Name: %s
Age: %d
Job: %s
Salary: %f
You will be retired in %s years.
==== END ====
'''%(name,name,age,job,salary,65-age)
print("格式化输出:\n",info1)

---------------------------
格式化输出-占位符方法
Name:xiaoming
Age:25
Job:it
Salary:8000
普通格式输出:
 xiaoming 25 it 8000
格式化输出:
 ==== info of xiaoming ====
Name: xiaoming
Age: 25
Job: it
Salary: 8000.000000
You will be retired in 40 years.
==== END ====
---------------------------

2.2.2.字符串拼接方法

  • 不常用
---------------------------
print("格式化输出-字符串拼接的应用")
name = input("name:")
age = int(input("age:"))
job = input("job:")
salary = input("salary:")
info2 = """
==== info of ''' + name +''' ====
Name:''' + name + '''
Age:''' + age + '''
Job:''' + job + '''
Salary:'''+ salary + '''
==== END ====
"""
print(info2)
---------------------------

2.2.3.format() 方法

  • 常用
name = input("name:")
age = int(input("age:"))
job = input("job:")
salary = input("salary:")
info3 = '''
==== info of {_name} ====
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
==== END ====
'''.format(_name=name,
          _age=age,
          _job=job,
          _salary=salary)
print(info3)

---------------------------
name:xiaoming
age:25
job:it
salary:8000

==== info of xiaoming ====
Name:xiaoming
Age:25
Job:it
Salary:8000
==== END ====
---------------------------

2.2.4.变量替换方法

  • 不推荐使用,因为变量定义比较模糊
name = input("name:")
age = int(input("age:"))
job = input("job:")
salary = input("salary:")
info4 = '''
==== info of {0} ====
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
==== END ====
'''.format(name,age,job,salary)
print(info4)

---------------------------
name:xiaoming
age:25
job:it
salary:8000

==== info of xiaoming ====
Name:xiaoming
Age:25
Job:it
Salary:8000
==== END ====
---------------------------

10.参考地址

posted @ 2017-12-10 21:08  天生帅才  阅读(284)  评论(0编辑  收藏  举报
// 百度统计