待手绾青丝

待手绾青丝

待手绾青丝

庭中三千梨花树,再无一朵入我心。 心中只你一朵,似在心中,不在心中,可望可念可想不可及。

109 文章数
2 评论数
来首音乐
光阴似箭
今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

第四篇:用户交互和格式化输出

2022-05-24 / 0 评论 / 634 阅读 / 0 点赞

用户交互和格式化输出

一、程序与用户交互

1、什么是与用户交互?

用户交互就是人类向计算机中input/输入数据,计算机向外output/输出数据。

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

与用户进行交互的原因是为了让我们与计算机能够像人与人之间一样可以沟通交流。

3、如何进行用户交互?

与用户交互的本质就是输入和输出

1.输入input

Python 3 中,使用 input() 函数向计算机中输入内容。对于 input() 函数来说,无论用户输入什么类型的数据,都会被保存成 str 类型的数据,然后将 str 类型数据的内存地址赋值给等号左边的变量名。

user_name = input('请输入您的用户名:')
user_pwd = input('请输入您的密码:')
print(user_name)
print(user_pwd)

#结果
请输入您的用户名:1
请输入您的密码:2
1
2

注意

​ 在 Python 2 中,使用 raw_input() 函数,对于 raw_input() 函数来说,无论用户输入什么类型的数据,都会被保存成 str 类型的数据,然后将 str 类型数据的内存地址赋值给等号左边的变量名。

​ 在 Python 2 中,也有一个 input() 函数,该函数虽然与 Python3中的函数同名,都为 input() ,但是功能确实有差别的,怎么讲?这个函数并不像 Python3中的 input() 函数那样,无论用户输入什么类型的数据,都会被保存成 str类型的数据, Python 2中的 input() 函数将数据保存成什么类型的数据是取决于我们人类的,比如我们给计算机一个int类型的数据,那么 input() 函数就会将这个数据存成int类型的数据。

2.输出output

​ 在 Python 3 中,使用 print() 函数,计算机可以向外输出内容

print('Hello World!')  # 一次只打印一个值

# 结果
Hello World!

print('hello', 'world', 'python', 'java', 'c', 'c++', 'go', sep='|', end='^\n') # 一次打印多个值,多个值之间使用 , 来分隔,sep='|'的效果就是多个值之间使用 | 来间隔,end='^\n'的效果就是最后一个值的后面跟着一个 ^ 以及 换行。

# 结果
hello|world|python|java|c|c++|go^

# 默认情况下,end=''参数的默认值是'\n'(代表换行),可以将end参数改成其他任意字符
print('tim', end='')
print('cook', end='&')
print('apple', end='@')

# 结果
timcook&apple@

二、格式化输出

1、什么是格式化输出?

​ 所谓的格式化输出,直白地讲就是控制输出的格式,比如我们想让计算机那样那样输出,或者这样这样输出,说白了就是指定格式,这样的情况我们称之为 格式化输出

2、为什么要进行格式化输出?

​ 因为我们经常会输出具有某种固定格式的内容,比如说:'亲爱的xxx同学,你好,我是xxx学校的xxx' ,我们需要做的就是将 xxx 替换为具体的内容。

3、如何进行格式化输出?

1.利用占位符格式化输出

特点:兼容性好,性能弱

1)%s 可以接受任意类型的值
print('亲爱的%s同学,你好,我是%s学校的%s,我们学校一共有学生%s' % ('Tim', 'MIT', 'Cook', 10000))

# 结果
亲爱的Tim同学,你好,我是MIT学校的Cook,我们学校一共有学生10000
2)%d 只能接收数字
print('亲爱的%s同学,你好,我是%s学校的%s,我们学校一共有学生%d' % ('Tim', 'MIT', 'Cook', 10000))

# 结果
亲爱的Tim同学,你好,我是MIT学校的Cook,我们学校一共有学生10000
练习
user_name = input('Please enter your name: ')
user_age = input('Please enter your age: ')
print("My name is %s and I'm %s years old!" % (user_name, user_age))

# 结果
Please enter your name: xiaowu
Please enter your age: 22
My name is xiaowu and I'm 22 years old!
user_name = input('Please enter your name: ')
user_age = input('Please enter your age: ')
user_gender = input('Please enter your gender: ')
user_inc = input('Please enter your corporation: ')
print('''
... ----------info of %s----------
... 
... Name : %s
... 
... Age : %s
... 
... Gender : %s
... 
... Corporation : %s
... 
... ----------info of %s----------
... ''' % (user_name, user_name, user_age, user_gender, user_inc, user_name))

# 结果
Please enter your name: xiaowu
Please enter your age: 22
Please enter your gender: 1
Please enter your corporation: 2

... ----------info of xiaowu----------
... 
... Name : xiaowu
... 
... Age : 22
... 
... Gender : 1
... 
... Corporation : 2
... 
... ----------info of xiaowu----------
... 

进程已结束,退出代码为 0

2.利用字符串的方法格式化输出

特点:兼容性适中,性能适中

字符串 str 类型中有一个方法:format()

first_name = input('Please enter your first name: ')
second_name = input('Please enter your second name: ')
print('My first name is {0}, My second name is {1}'.format(first_name, second_name))

# 结果
Please enter your first name: first
Please enter your second name: second
My first name is first, My second name is second

3.利用f-strings格式化输出

兼容性差,性能强

f-strings 格式化输出是 Python 3.6 中推出的 ,因此,只有在 3.6 版本以及更新的解释器中才能够使用该格式化输出方法。

user_name = input('请输入用户名:')
print(f'你好{user_name}')

# 小武
请输入用户名:xiaowu
你好xiaowu

4.利用内建库string格式化输出

兼容性强,安全性高

​ 从 Python 2.4 起,Python标准库 string 引入了 Template 也可以用来格式化字符串,所以说,与前三种方式的一个显著区别就是:Template属于python语言的核心语法特征,使用方式如下

from string import Template
name='xiaowu'
templ_string = 'Hello $name, there is a $error error!!!'
res=Template(templ_string).substitute(name=name, error=hex(12345))
print(res) 

# 结果
Hello xiaowu, there is a 0x3039 error!!!

使用模板字符串 Template 的最佳的时机就是当你的程序需要处理由用户提供的输入内容时。模板字符串是最保险的选择,因为可以降低复杂性。

其他一些复杂的字符串格式化技巧的可能会给你的程序带来安全漏洞。

4、格式化输出的应用场景

如果格式化的字符串是由用户输入的,那么基于安全性考虑,推荐使用Template

如果使用的 Python3.6+ 版本的解释器,推荐使用:f-strings

如果要兼容 Python2.x 版本的 Python解释器,推荐使用:str.format

如果不是测试的代码,不推荐使用%

文章不错,扫码支持一下吧~
上一篇 下一篇
评论
最新回复
文章目录
每日一句