哎呀,刚开始学 Python 那会儿,可把我折腾得够呛。特别是想让程序能“听”我说话,我敲啥它能知道,这事儿一度困惑我好久。你想啊,写个程序老是写死数据,改个名字、改个数字就得去动代码,这哪行?得让它活起来,能跟我互动啊!这不就涉及到python怎么输入字符串这码事儿了嘛。
那时候摸索半天,终于知道了,Python 里头有个特别重要的内置函数,就是专门干这活儿的,它叫 input()
。这个函数啊,就像你程序伸出来的一只手,安安静静地等着。等着啥呢?等着你在键盘上噼里啪啦地敲字儿,敲完了,按下那个大大的回车键,啪!你敲的所有东西,甭管是名字、数字、标点符号,还是啥乱七八糟的火星文,它都能一把抓过来,然后塞给你程序里的一个变量。
举个最简单的例子哈。你想让程序问问你叫啥名儿,你可以这么写:
python
my_name = input()
print('你好,' + my_name + '!')
当你运行这段代码,控制台(就是那个黑乎乎或者白乎乎的命令行窗口)上啥都没有,就一个光标在那儿闪啊闪。它在等你!你这时候就可以敲你的名字,比如“张三”,然后回车。回车一按,input()
就把“张三”这个信息捕获到了,存到了 my_name
这个变量里。然后下一行 print
语句就把“你好,张三!”打出来了。是不是有点意思?程序会跟你打招呼了!
当然啦,光标在那儿傻等,用户可能不知道该干啥。所以,input()
函数还有一个更友好的用法,就是可以在括号里放一个提示信息,一个字符串。这个提示信息会在等你输入之前显示出来,告诉用户该输入点儿啥。
python
user_name = input('请问您叫什么名字呀?')
print('很高兴认识你,' + user_name + '!')
这回运行程序,控制台会先显示“请问您叫什么名字呀?”,然后光标在后面等着。你就知道,哦,这会儿该输名字了。输入“李四”,回车,程序就会打印“很高兴认识你,李四!”。瞧,程序是不是变得更人性化一点了?那个括号里的提示信息,你可以随便写,想让用户输啥,就写啥提示,越清楚越好。
好了,现在你已经知道怎么用 input()
来获取用户在键盘上敲的字符串了。但是!这里有个巨!巨!巨大的坑,特别是对于初学者来说,一不小心就得栽进去。这个坑就是:input()
函数,它不管你输入的是不是看起来像个数字,它永远!总是!百分之百!返回的都是字符串(string)类型!
啥意思呢?就是说,如果你写了 age = input('请问您今年多大啦?')
,然后你在控制台输入了 18
。在你的眼睛看来,18
就是个数字,十八岁嘛。但在 Python 里,经过 input()
函数这一道,存到 age
变量里的,不是数字18,而是字符串 '18'
!别看它长得像数字,骨子里它就是一串字符‘1’和‘8’,跟名字“张三”或者“你好”是同一个性质的数据类型。
这个坑有多深?深到你一不小心就会掉进去,然后程序就给你报错,最常见的错误是 TypeError
。比如,你想写个程序,让用户输入两个数字,然后计算它们的和。你可能会这样写:
“`python
错误示范!
num1 = input(‘请输入第一个数字:’)
num2 = input(‘请输入第二个数字:’)
result = num1 + num2
print(‘它们的和是:’ + result)
``
5
当你运行这段代码,输入,再输入
10。你心里想的是 5 + 10 = 15。但程序会输出啥?**
510**!没错,不是 15,是 **
510**!为啥?因为
num1里面是**字符串**
‘5’,
num2里面是**字符串**
’10’。字符串的加号操作符不是做数学加法,它是做**拼接**!就是把两个字符串首尾相连,拼成一个更长的字符串。所以
‘5’ + ’10’的结果自然就是
‘510’` 了。当年我第一次遇到这情况,整个人都傻了,盯着屏幕半天反应不过来,心想这电脑是不是坏了,5加10怎么会是510呢?
后来才知道,问题不在电脑,在我!在我没搞清楚 input()
返回的是字符串这个天大的事实!
那要怎么才能让输入的数字真的变成数字,然后做数学运算呢?这就需要进行类型转换(Type Casting) 了。Python 提供了各种函数来把一个数据类型转换成另一个。要把字符串变成数字,最常用的就是 int()
函数(转成整数)和 float()
函数(转成浮点数,也就是小数)。
正确的写法应该是这样:
“`python
正确示范!
num1_str = input(‘请输入第一个数字:’)
num2_str = input(‘请输入第二个数字:’)
将字符串转换为整数
num1 = int(num1_str)
num2 = int(num2_str)
现在可以做数学加法了
result = num1 + num2
print(‘它们的和是:’ + str(result)) # 注意这里把数字结果又转回字符串才能和文本拼接
或者更简洁一点,直接在获取输入的同一行就进行转换:
python
更简洁的正确示范
num1 = int(input(‘请输入第一个数字:’))
num2 = int(input(‘请输入第二个数字:’))
result = num1 + num2
print(‘它们的和是:’ + str(result))
``
int()
看明白了吗?就是多套了一个 **** 函数在 **
input()** 的外面。**
input()** 先把用户输入的**字符串**拿到,比如
‘5’,然后 **
int()** 函数再把这个**字符串**
‘5’变成真正的整数
5。同理,把
’10’变成整数
10。这下
num1和
num2就都是货真价实的数字了,再用加号,做的就是数学上的加法,
5 + 10自然就等于
15了。这时候再打印结果,别忘了
print()函数默认是把东西变成**字符串**再输出的,如果你想把一个数字跟一段文字拼起来打印,最好把数字也用 **
str()** 函数转回**字符串**。不过
print()函数聪明着呢,你直接写
print(‘它们的和是:’, result)` 也行,用逗号隔开,它会自己处理好不同类型数据的输出。
如果用户输入的是小数,比如想算 3.14 + 2.86,那你就得用 float()
函数了:
“`python
num1_float = float(input(‘请输入第一个小数:’))
num2_float = float(input(‘请输入第二个小数:’))
sum_float = num1_float + num2_float
print(‘它们的和是:’ + str(sum_float))
``
float(input(…))
这里 **** 就是先把输入的**字符串**(比如
‘3.14’)变成浮点数(
3.14`)。
所以啊,记住这个黄金法则:input()
永远给你字符串!如果你需要数字,一定要类型转换,用 int()
或 float()
!这个点太重要了,初学的时候摸不着头脑,一旦搞清楚了,感觉一下子就打通任督二脉了。
当然,实际使用中你还会遇到各种“意外”。比如,你让用户输入数字,结果他调皮捣蛋,输了个字母“你好”进去。这时候你用 int('你好')
去尝试转换,Python 会毫不留情地给你一个 ValueError
(数值错误),程序就会崩溃,很不体面。怎么处理这种用户输错的情况呢?这就涉及到更高级的异常处理(try-except)了。简单说,就是告诉程序:“你试试去转换它,万一错了(发生了异常),别慌,听我的,执行另一段代码(比如打印个错误提示),别直接死了。” 不过这都是后话了,等你把基本的输入输出和类型转换玩溜了,再去学异常处理也不迟。先把眼前这个最基础、最常用的 input()
怎么用,以及它返回的是 字符串 这个事儿,刻到脑子里。
有时候你想让用户一行输入好几个信息,比如名字和年龄,中间用空格或者逗号隔开。input()
一次只能读一整行字符串,但你可以利用字符串自带的 split()
方法,把这一整行字符串按照指定的分隔符(默认是空格)劈开,变成一个列表(list)。
比如:
“`python
info_string = input(‘请输入您的姓名和年龄,用空格隔开:’) # 例如输入:张三 18
info_list = info_string.split() # 默认按空格分割
user_name = info_list[0] # 列表中第一个元素是姓名
age_str = info_list[1] # 列表中第二个元素是年龄
别忘了,age_str 还是字符串,如果需要计算得转换
user_age = int(age_str)
print(‘姓名:’ + user_name)
print(‘年龄:’ + str(user_age))
``
input()
看吧,拿到的是
‘张三 18’这个完整的**字符串**,
split()方法把它变成了
[‘张三’, ’18’]这个列表。然后你再通过索引
[0]和
[1]分别取出列表里的元素。注意取出来的还是**字符串**,所以年龄那个
’18’如果要当数字用,还得 **
int()`** 一下。
整个过程,从 input()
获取原始字符串,到可能进行的 类型转换 (用 int()
或 float()
),再到利用 split()
等方法处理更复杂的输入格式,其实都围绕着一个核心点:input()
的结果是字符串。理解并记住这个,你就趟过了 Python 输入的第一个,也是最容易绊倒人的坎儿。
学编程这事儿,很多时候看着书或者教程觉得挺简单,真自己动手敲代码,遇到问题了,才知道哪个地方没真正懂透。python怎么输入字符串?就这么个事儿,看起来简单,背后连着数据类型、类型转换、甚至未来的异常处理。多写写代码,多试试,让你的程序不再是个只能自言自语的“哑巴”,能接收你的指令,能跟你互动起来。这一个小小的 input()
函数,就是打开程序交互世界的一扇门。去敲代码吧,让它“听”见你!
评论(0)