Python——输入(Input)输出(Output)

输入Input

使用**<变量> = input()**

print("请输入你的名字:")
name = input()
print(name)
print("请输入一个数字")
num = input()
print(num)
请输入你的名字:
稻米哟
稻米哟
请输入一个数字
2
2
Process finished with exit code 0

上述语句可以进行简化
<变量> = input(“<提示性语句>”)

name = input("请输入你的名字")
print(name)
num = input("请输入一个数字")

我们可以通过**type( )**进行查询变量的类型,如

print(type(name))
<class 'str'>

可以得到‘name’是一个字符串类型的变量
那么‘num’是字符串还是整型呢?

请输入你的名字稻米哟
稻米哟
请输入一个数字
2
2
<class 'str'>
<class 'str'>

可以看到num也是一个字符串类型,即无论用户输入的是字符串还是变量,input()函数同意按照字符串形式输出
如果我们希望得到一个数字,可以通过类型转换得到,如
int() float()

num = int(input("请输入一个数字"))
print(type(num))
num = float(input())
print(type(num))
请输入一个数字
200
<class 'int'>
12
<class 'float'>

有时候,我们也会使用**eval(<字符串>)**函数将输入的字符串转变为Python语句,如:

print("请输入一个数字")
num = input()
print(type(eval(num)))
请输入一个数字
5
<class 'int'>

也可以将字符串中特定位置转换为数字

s = input()
print(eval(s[0:3]))
print(type(eval(s[0:3])))
102102
<class 'int'>

获得多个输入

.split() 是字符串方法,用于将字符串按照默认的分隔符(空格)或指定的分隔符拆分成多个部分,并返回字符串部分的列表。

a, b, c = map(int,input().split(' '))

获得一行数据存入一个数据容器

实际应用中,经常会出现将用户输入的一行不同数据存入某一个数据容器,此时我们可以使用**<变量> = input(“<提示性语句>”).split(“<分割标志>”)**

如,用户输入一行以空格为分割数字

num = input("请输入你的生日").split(" ")
print(num)
请输入你的生日2015 08 17
['2015', '08', '17']

用户输入一行**以,**为分割数字

num = input("请输入你的生日").split(",")
print(num)
请输入你的生日wome,54,零零
['wome', '54', '零零']

很显然获得了一个字符串列表,我们是否可以用上面的知识将它转换为数字?我们来尝试一下

num = int(input("请输入你的生日").split(" "))
print(num)
    num = int(input("请输入你的生日").split(" "))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'list'

很显然不行,因为int()函数要求待转换的内容必须是字符串字符串对象数字,而不是一个列表。我们只能寻求其他方法——map()

map()函数

map()作用是将一个函数应用于一个可迭代对象(例如列表、元组等)的每个元素,并返回一个包含应用函数后结果的新的可迭代对象(通常是一个列表),提供了一种方便的方式来对可迭代对象中的每个元素进行同一操作,并返回处理后的结果。

语法如下:
map(function, iterable)
function:要应用于可迭代对象的函数。可以是内置函数、自定义函数或 lambda 函数。
iterable:可迭代对象,如列表、元组等。

我们将该函数应用于上述代码:

num = map(int, input("请输入你的生日").split(" "))
print(num)
请输入你的生日2015 08 17
<map object at 0x000001DFF1BEA620>

返回结果却不是我们希望的那般,这是因为需要注意的是,map() 函数会返回一个迭代器对象,所以我们需要使用 list() 函数将其转换为列表类型,方便打印和操作。
我们可以将其转换为列表list()之后在进行打印。

num = list(map(int, input("请输入你的生日").split(" ")))
print(num)
请输入你的生日2015 08 17
[2015, 8, 17]

将一行输入拆分多个部分存入不同的数据容器

如我们获得一行学生姓名和学科成绩的输入,将它存入姓名列表和成绩列表中

name, *line = input().split()
scores = list(map(int, line))
print(name)
print(scores)
张三 87 89 98
张三
[87, 89, 98]

注:
*line 是一个特殊的语法,用于将剩余部分作为列表存储在 line 变量中。 表示可变数量的位置参数,它将多个元素打包成一个元组或列表,这里它将拆分后的字符串的剩余部分作为一个列表存储在 line 中。

输出Output

直接输出具体内容

print(具体内容)

print(1)
print(True)
print("好的")
print(2+3)
print("长白轮转"+"十五秋")
1
True
好的
5
长白轮转十五秋

直接输出变量

输出一个变量
print(<变量名>)

n = 3
print(n)
name = '张三'
print(name)
list1 = {0, 'a', 8, '张三'}
print(list1)

输出多个变量
print(<变量名1>,<变量名2>,…)

print(n, name, list1)
3 张三 {0, 'a', '张三', 8}
name = "吴邪"
address = "河坊街西泠印社边上的吴山居"
print("我叫" + name + ",家住在" + address)
我叫吴邪,家住在河坊街西泠印社边上的吴山居

输出不变行

默认的print语句输出内容会自动变行
我们可以采用
print(语句, end=’ ')

print('张三')
print('李四')

print('张三', end=' ')
print('李四', end=' ')

张三
李四
张三 李四 

格式化输出

字符串格式化
在这里插入图片描述
多个变量占位,变量须用括号括起来(括号前加上%),并按占位的顺序填入

subject = "AI"
class_num = 57
avg_salary = 25641.25
message = "%s火爆学科,北京%d期,毕业平均工资%f" %(subject,class_num,avg_salary )
print(message)
AI火爆学科,北京57期,毕业平均工资25641.250000

精度控制
通过m.n控制数据的宽度和精度
m:控制宽度,要求是数字,设置宽度应该大于数字本身(补空格)
n:控制小数点精度,要求是数字,对小数进行四舍五入
eg: %5.2f %5d(不限制精度) %.2f(不限制宽度)

message = "%s火爆学科,北京%d期,毕业平均工资%.2f" %(subject, class_num, avg_salary)
print(message)
AI火爆学科,北京57期,毕业平均工资25641.25
快速格式化方法

不限数据类型,不做精度控制

formate()

formatted_string = "Text with {} placeholders".format(value1, value2, ...)

在这个基本语法中,{}是占位符,可以用来接收要填充的值。format()方法的参数会按照顺序依次填充到占位符中。

name = "Alice"
age = 25
message = "My name is {} and I'm {} years old.".format(name, age)
print(message)
#输出:My name is Alice and I'm 25 years old.

#可以指定要填充的占位符的位置```python
name = "Alice"
age = 25
message = "Hi, {1}! I heard you're {0} years old.".format(age, name)
print(message)
#输出:Hi, Alice! I heard you're 25 years old.

f "内容{变量} "

name = "吴邪"
address = "河坊街西泠印社边上的吴山居"
num = "0817"
print(f"我叫{name},家住在{address},门牌号是{num}")
print("1*1 的结果是:%d" % (1*1))
print(f"1*1 的结果是:{1*1}")
print("字符串在Python中的类型名是:%s" % type("字符"))

码字不易,给个👍~我们下一篇博客见!

才疏学浅,个人理解难免有错,欢迎指正。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值