Python语法入门之与用户交互与格式化输出

Python语法入门之与用户交互与格式化输出

一、程序与用户交互

1.1、什么是与用户交互

用户交互就是人往计算机中input/输入数据,计算机print/输出结果

1.2、为什么要与用户交互?

为了让计算机能够像人一样与用户沟通交流

比如,过去我们去银行取钱,用户需要把帐号密码告诉柜员,而现在,柜员被ATM机取代,ATM机就是一台计算机,所以用户同样需要将帐号密码告诉计算机,于是我们的程序中必须有相应的机制来控制计算机接收用户输入的内容,并且输出结果

1.3、如何与用户交互

交互的本质就是输入(input)、输出(print)

  • 接收用户输入 input
?"input"会将用户输入的内容都转化成字符串类型
name = input("请输入你的名字>>")  #输入"shawn"
print(name)   #shawn
passwd = input("请输入密码>>")   #"123"
print(type(passwd))   #<class 'str'>
  • Python2与Python3—input比较(了解)
?python2中"input"有两种
1. "raw_input",等同于Python3中的"input"
2. "input",需要用户输入一个明确的数据类型,输入的什么类型就存成什么类型
  • 输出(print)
x = 1
y = 2
z = 3
print(x)  #1
print(2)  #2
print(x,y,z)  #1,2,3
?"print"默认自带"\n"
可以使用'end=""'来取消

二、格式化输出

(1)什么是格式化输出?

把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出。

(2)为什么要格式化输出?

我们经常会输出具有某种固定格式的内容,

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

------------ info of 淘小欣  -----------
Name  : 淘小欣
Age   : 22
job   : liberal professions
Hobbie: girl
------------- end -----------------

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

(3)如何格式化输出?

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

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

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

Traceback (most recent call last):
  File "F:/python_16/day 15/atm.py", line 277, in <module>
    info = '''
TypeError: %d format: a number is required, not str
#说%d需要一个数字,而不是str。

怎么看呢?查看数据类型的方法是什么来着?type()

name = input("Name:")
age = input("Age:")
print(type(age))

执行输出是

Name:淘小欣
Age:22
<class 'str'> #怎么会是str
Job:IT

**因为input接收的所有输入默认都是字符串格式!**你可以把str转成int

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

同时可以把字符串转成数字str( yourStr )

问题:现在有这么行代码

msg = "我是%s,年龄%d,目前学习进度为80%"%('淘小欣',18)
print(msg)

这样会报错的,因为在格式化输出里,你出现%默认为就是占位符的%,但是我想在上面一条语句中最后的80%就是表示80%而不是占位符,怎么办?

msg = "我是%s,年龄%d,目前学习进度为80%%"%('淘小欣',18)
print(msg)

这样就可以了,第一个%是对第二个%的转译,告诉Python解释器这只是一个单纯的%,而不是占位符。

(4)格式化输出总结:

  • 1.%格式化输出
# 按照位置顺序传值,一一对应
msg = "my name is %s" %('shawn')
msg = "my name is %s,my age is %s" %('shawn',22)
print(msg)
  • 2.xxx.format : (2.6版本推出,兼容版本2与3)
# 按照位置顺序传值
msg = "my name is {}".format('shawn')
msg = "my name is {},my age is {}".format('shawn',22)

?通过索引取值
msg = "my name is {0} {1} {0},my age is {1}".format('shawn',22)
#从左到右括号的值:Shawn,22,Shawn,22
  • 3.f"{}" : 格式化输出(3.6版本开始支持)
?直接传入变量名
name = "shawn"
age = 22
print(f"my name is {name},my age is {age}")

ps :速度对比: f'{}'> str.format(推荐使用) > %

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾维斯Echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值