嘿,朋友!聊聊写代码这事儿,你有没有觉得,有时候写着写着,程序就像个闷葫芦?它就按照你写好的逻辑一步步往下走,可你想让它变得活泛点儿,能听听外面世界的“声音”,能跟你互动,这可咋办?这就是“输入”的意义所在了!Python 这玩意儿,要让它能接收你的指令,能拿你给的数据,其实一点儿都不复杂,核心就那么一两个家伙,但里头有些小门道,得说道说道。
你想想看,咱们平时用软件,是不是总得点点按钮,填填框框?这就是软件在“等”你输入。在写程序的时候,尤其是那些需要用户提供信息才能继续的脚本,比如让你输入名字打个招呼,或者让你输入两个数帮你算算加减乘除,用户输入就成了不可或缺的一环。Python 里搞定这事儿,最最基础,也是你一辈子都要跟它打交道的那个函数,就是 input()
。
瞧瞧这玩意儿,简单得不能再简单了。你就这么写:
python
user_says = input()
print("你刚才说了啥?哦,原来是:", user_says)
你运行这段代码,屏幕上会闪烁着一个光标,在那儿等着你。你就噼里啪啦敲点儿东西,然后回车。回车之后,神奇的事情发生了,你刚才敲的那些字儿,就被“抓住”了,存到了那个叫 user_says
的小盒子里(也就是变量)。然后下一行 print
就会把你输入的内容打印出来。感觉像不像程序跟你打了声招呼,然后问:“嘿,你想说啥呀?” 你说了,它还挺聪明地把你的话重复了一遍。
但光是等在那儿,啥提示都没有,用户可能会一脸懵逼啊。这程序到底要我干啥?总不能让用户去猜吧。所以,input()
函数其实有个贴心的功能,你可以在括号里给它塞一段文字,这段文字就会在光标出现之前显示出来,作为给用户的提示。这多好啊!
“`python
name = input(“请输入你的名字:”)
print(“你好啊,”, name, “!很高兴认识你。”)
age_str = input(“告诉我你的年龄呗:”)
print(“原来你今年”, age_str, “岁啦!”)
“`
看!这次程序运行起来,先是显示“请输入你的名字:”,等我输入了名字回车,它再显示“告诉我你的年龄呗:”,等我输入年龄回车,最后才一起跟我打招呼。这感觉是不是一下子就友好了很多?你的程序不再是那个闷葫芦了,它学会了“问候”和“提问”。
好了,重点来了,也是很多初学者可能会栽跟头的地方。前面我输入年龄的时候,把结果存到了一个叫 age_str
的变量里。注意看名字,我故意加了个 _str
,这是个小习惯,提醒自己这个变量里存的是个字符串(string)。对!没错!input()
函数,不管你输入的是数字、字母、符号,甚至是个空格,它统统会当作字符串来处理! 它就像个复印机,把你在键盘上敲的一切原封不动地“复印”下来,贴上一个“字符串”的标签。
这有个啥问题呢?问题大了去了!如果你想用用户输入的年龄来算点啥,比如算算再过十年他多大,或者判断他是不是成年了,直接拿这个字符串去算,肯定会出错!
比如,你想让用户输入两个数,然后把它们加起来:
“`python
num1_str = input(“输入第一个数字:”)
num2_str = input(“输入第二个数字:”)
假设用户输入了 5 和 3
num1_str 现在是 “5”
num2_str 现在是 “3”
错误示范!这里会把 “5” 和 “3” 拼接到一起,变成 “53”,而不是数字相加
result_str = num1_str + num2_str
print(“相加结果是:”, result_str) # 输出:相加结果是: 53
“`
看到了吧?它把“5”和“3”像搭积木一样拼在了一起,结果是“53”,这显然不是我们想要的 8!为啥会这样?因为它们是字符串啊!字符串的加法操作默认就是拼接。
那咋办?别慌,Python 提供了强大的类型转换功能。如果我知道用户输入的是个数字,但 input()
函数把它变成了字符串,我就得把它“变回”数字!
如果我确定用户会输入一个整数(没有小数点的那种),我可以用 int()
函数来转换:
“`python
num1_str = input(“输入第一个整数:”)
num2_str = input(“输入第二个整数:”)
进行类型转换!把字符串 “5” 变成整数 5,把 “3” 变成整数 3
num1 = int(num1_str)
num2 = int(num2_str)
现在它们是真正的数字了,可以进行数学运算了!
result = num1 + num2
print(“相加结果是:”, result) # 输出:相加结果是: 8
“`
看!这不就对了嘛!通过 int()
这么一转,字符串的“画皮”就被揭掉了,露出了里面数字的“真身”。
那如果用户输入的是带小数点的数字呢?比如金额、温度或者圆周率啥的。这时候就不能用 int()
了,int()
只能处理整数,你给它一个“3.14”,它会不知道怎么弄,可能会报错。对于浮点数(带小数的数字),咱们得请出另一位转换大师:float()
。
“`python
price_str = input(“请输入商品价格:”)
quantity_str = input(“请输入购买数量:”)
假设价格输入 10.5,数量输入 2
price_str 是 “10.5”, quantity_str 是 “2”
类型转换
price = float(price_str) # “10.5” 变成浮点数 10.5
注意:数量如果是整数,转成 float 也没问题,2 会变成 2.0
但如果确定是整数,转成 int() 更精确
quantity = int(quantity_str) # “2” 变成整数 2
total_cost = price * quantity
print(“总价是:”, total_cost) # 输出:总价是: 21.0
“`
通过 float()
和 int()
的配合,我们就能把从 input()
拿到的字符串,变成可以计算的数字了。
敲黑板! 这里有个隐患!如果用户不按套路出牌呢?你让我输数字,我偏偏输入个字母或者汉字,或者输个“你好”试试?这时候 int()
或者 float()
就会“翻脸”,抛出一个叫 ValueError
的错误,程序就崩掉了!哎呀,这就很不专业了。真正写程序的时候,你得考虑这些“意外”情况,用 try...except
这样的错误处理机制去兜住它,告诉用户“你输错了,请重新输入”之类的,而不是直接让程序嗝屁。不过,这属于更高级的话题了,咱们先把基本的类型转换弄明白再说。
有时候,你可能需要用户在一行里输入好几个信息,用空格或者逗号隔开,比如同时输入身高和体重。这时候怎么办?你当然可以连续调用两次 input()
,但如果用户习惯在一行输完呢?别急,input()
拿到的整个字符串里包含了所有的输入。我们可以用字符串的 split()
方法,把它按某个分隔符(比如空格)“劈开”,变成一个列表(list)。
“`python
假设用户输入: 180 75
height_weight_str = input(“请用空格隔开,输入身高和体重:”) # height_weight_str 就是 “180 75”
用 split() 方法按空格分割字符串,得到一个列表
这个列表里是 [“180”, “75”],注意,列表里装的还是字符串!
hw_list_str = height_weight_str.split()
从列表中取出对应的值
height_str = hw_list_str[0] # height_str 是 “180”
weight_str = hw_list_str[1] # weight_str 是 “75”
最后别忘了类型转换!
height = int(height_str)
weight = int(weight_str)
print(“你的身高是”, height, “厘米,体重是”, weight, “公斤。”)
“`
这感觉是不是有点儿像拆快递包裹?一个大包裹(一行字符串),里面装着好几件东西(用空格或逗号隔开的值)。我们用 split()
把包裹拆开,拿到列表,再从列表里把每件东西拿出来,最后根据需要(比如是数字还是文字)进行类型转换。如果用户是用逗号分隔的,那 split()
里就要写 ,
,比如 height_weight_str.split(',')
。
输入这事儿,看起来简单,一个 input()
函数就搞定。但背后牵扯到变量的赋值,更重要的是类型转换这个大坑!务必记住:input()
默认拿到的是字符串,如果你想用它做数字计算,一定得转成 int()
或 float()
! 这一点,敲代码敲一万遍也得记牢!
其实,Python 里还有些更“高级”或者说“特定场合”的输入方式,比如有时候你想输入好几行文字,直到遇到一个空行或者特定的结束符才算完。这个嘛,你可以用循环结构,不停地调用 input()
,然后把拿到的每一行存起来,直到满足某个条件跳出循环。这比单单一个 input()
调用要复杂一些,但原理都是一样的:调用 input()
接收一行文字,然后处理这一行。
说白了,python怎么输入这事儿,核心就是那个 input()
函数,它是程序伸出去耳朵,听你在键盘上敲了啥。但听到啥是一回事儿(永远是字符串),把听到的东西理解成啥意思(是数字?是文字?是命令?)又是另一回事儿,这后半截就得靠你,靠你决定怎么把这个字符串类型转换成你程序需要的数据类型。
掌握了 input()
和类型转换,你就等于给你的 Python 程序安上了一个跟用户交流的嘴巴和耳朵。它能问问题,也能听回答了。想想看,写个猜数字小游戏、一个简单的计算器、或者一个能根据你输入的名字和心情生成一段小故事的程序,是不是都离不开这一步?让程序不再是单向输出的“广播”,而是可以双向交流的“对讲机”,这一切都从学会python怎么输入开始。不复杂,但绝对是关键一步,走稳了,后面的路才好走!
评论(0)