Python——第一章:用户交互
变量 = input(提示语)
首先会在屏幕中显示出提示语, 用户输入内容. 然后把用户输入的内容交给前面的变量
案例1:
a = input("请输入第一个数字:") #括号里是提示语
b = input("请输入第二个数字:") #括号里是提示语
print("a变量的数据类型是:", type(a)) # 用type来查看一个变量的数据类型
print("b变量的数据类型是:", type(b)) # 用type来查看一个变量的数据类型
print(a + b)
测试结果:
请输入第一个数字:15
请输入第二个数字:18
a变量的数据类型是:
<class 'str'>
b变量的数据类型是:
<class 'str'>
1518
这里有个坑: input()得到的结果一定是字符串
在 Python 中,变量的类型是动态的,这意味着你可以在任何时候更改变量的值和类型。
因此需要把字符串str类型转化成数字int类型
python中基础数据类型转化的格式如下:
a = int(a)
因此这段代码应该被优化为
案例2:
a = input("请输入第一个数字:")
b = input("请输入第二个数字:")
a = int(a)
b = int(b)
print("a变量的数据类型是:", type(a)) # 用type来查看一个变量的数据类型
print("b变量的数据类型是:", type(b)) # 用type来查看一个变量的数据类型
print("相加结果为:", a + b)
结果是
请输入第一个数字:13
请输入第二个数字:15
a变量的数据类型是: <class 'int'>
b变量的数据类型是: <class 'int'>
相加结果为: 28
案例3:此段代码,可以进一步合并,并将int整型改成float浮点型,以满足非整数型的数字
a = float(input("请输入第一个数字:"))
b = float(input("请输入第二个数字:"))
print("a变量的数据类型是:", type(a)) # 用type来查看一个变量的数据类型
print("b变量的数据类型是:", type(b)) # 用type来查看一个变量的数据类型
print("相加结果为:", a + b)
案例4:使用 try
和 except
来处理可能的输入错误,比如用户输入的不是数字,而是其他。
a = input("请输入第一个数字:") #括号里是提示语
b = input("请输入第二个数字:") #括号里是提示语
print("a变量的数据类型是:", type(a))
print("b变量的数据类型是:", type(b))
try:
sum = float(a) + float(b)
print("相加结果:", sum)
except ValueError:
print("输入了无效的数字")
案例5:使用自定义函数float_input进行无限循环尝试,当用户输入的为非法数字时,会循环判断重新输入
def float_input(prompt):
while True:
try:
value = float(input(prompt))
return value
except ValueError:
print("输入无效的数字,请重新输入") #括号里是提示语
a = float_input("请输入第一个数字a: ") #括号里是提示语
print("第一个数字:", a, "类型:", type(a))
b = float_input("请输入第二个数字b: ") #括号里是提示语
print("第二个数字:", b, "类型:", type(b))
result = a + b
print( a,"+",b,"=", result)
-
定义了一个名为
float_input
的函数,该函数接受一个参数prompt
,表示用户输入时的提示信息。 -
在函数内部,使用一个无限循环来等待用户输入。循环会不断尝试执行以下步骤,直到用户输入有效的浮点数为止:
解读循环部分代码的含义:
while True: try: value = float(input(prompt)) return value except ValueError: print("输入无效的数字,请重新输入")
-
while True:
:这创建了一个无限循环。循环体内的代码将反复执行,直到遇到return
或break
、continue
等其他中断循环的关键词才会结束。 -
try:
:这是一个异常处理块,用于尝试执行可能会引发异常的代码。 -
value = float(input(prompt))
:这一行代码首先使用input(prompt)
显示提示信息prompt
,并获取用户输入的字符串。并尝试将其转换为浮点数。如果转换成功,将得到的浮点数赋值给变量value
。 -
return value
:如果成功获取和转换浮点数,该值将通过return
语句被返回给调用者,同时终止函数的执行。 -
except ValueError:
:如果在try
块中出现ValueError
异常(即用户输入的字符串无法转换为浮点数),则执行以下代码块。 -
print("输入无效的数字,请重新输入")
:显示一条错误消息,提示用户输入无效。 - 如果没有出现
return value
,会重新进入while True:
循环等待用户重新输入。
-
-
跳出循环在主程序部分,通过调用
float_input
函数,通过return value
的返回值获取用户输入的两个浮点数a
和b
。这两个浮点数会在函数内部循环中进行验证,直到输入有效。 -
解读
value = float(input(prompt))
这一行代码时,需要分解成几个部分来理解其含义:-
prompt
: 这是一个参数,是传递给函数的提示信息,它会在用户输入时显示,以引导用户提供相应的值。 -
input(prompt)
: 这部分是在控制台显示提示信息,并等待用户在命令行中输入内容。用户输入的内容会以字符串的形式被返回。 -
float(...)
: 这是一个内置的 Python 函数,用于将传递给它的内容转换为浮点数。在这里,我们希望将用户输入的字符串转换为浮点数,以便进行数值计算。 -
value = float(input(prompt))
: 这是将上述步骤组合起来的代码。它首先显示prompt
提示信息,然后等待用户输入内容,接着将用户输入的字符串转换为浮点数,并将结果赋值给变量value
。这样,通过这一行代码,你可以从用户获取一个浮点数类型的输入,并将其存储在变量value
中。
-
案例6:如果还想加入跳出循环,可以使用break判断终止程序
def float_input(prompt):
while True:
try:
value = float(input(prompt))
return value
except ValueError:
print("输入无效的数字,请重新输入")
continue_input = input("是否继续输入?(输入任意键继续,输入n退出): ")
if continue_input.lower() == 'n':
break
a = float_input("请输入第一个数字: ")
print("第一个数字:", a, "类型:", type(a))
b = float_input("请输入第二个数字: ")
print("第二个数字:", b, "类型:", type(b))
result = a + b
print("相加结果:", result)
此时如果用户输入了n,退出了break,但是依旧会报错。
请输入第一个数字: 123
第一个数字: 123.0 类型: <class 'float'>
请输入第二个数字: fff
输入无效的数字,请重新输入
是否继续输入?(输入任意键继续,输入n退出): n
第二个数字: None 类型: <class 'NoneType'>
Traceback (most recent call last):
File "D:\Python\test1\用户交互脚本测试.py", line 18, in <module>
result = a + b
~~^~~
TypeError: unsupported operand type(s) for +: 'float' and 'NoneType'
因为用户输入了n后,数字被赋值为空,类型自动为None,break跳出循环后,程序会继续运行下去。
案例7:因此这段代码可被修改为
def float_input(prompt):
while True:
try:
value = float(input(prompt))
return value
except ValueError:
print("输入无效的数字,请重新输入")
continue_input = input("是否继续输入?(输入任意键继续,输入n退出): ")
if continue_input.lower() == 'n':
break
a = float_input("请输入第一个数字: ")
if a is not None:
print("第一个数字:", a, "类型:", type(a))
b = float_input("请输入第二个数字: ")
if b is not None:
print("第二个数字:", b, "类型:", type(b))
if a is not None and b is not None:
result = a + b
print( a,"+",b,"=", result)
案例8:我认为最好的写法如下
def float_input(prompt):
while True:
PanDuan = input(prompt)
if PanDuan == 'q':
exit()
try:
value = float(PanDuan)
return value
except ValueError:
print("输入无效的数字,请重新输入")
a = float_input("请输入第一个数字:(输入q退出) ")
print("第一个数字:", a, "类型:", type(a))
b = float_input("请输入第二个数字(输入q退出): ")
print("第二个数字:", b, "类型:", type(b))
result = a + b
print("相加结果:", result)
因此我们可以看到,要实现简单的用户交付功能,可能到案例3就可以了。但是为了解决各种情况下的问题,我们需要持续优化代码,解决各种BUG问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)