变量 = 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:使用 tryexcept 来处理可能的输入错误,比如用户输入的不是数字,而是其他。

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)
  1. 定义了一个名为 float_input 的函数,该函数接受一个参数 prompt,表示用户输入时的提示信息。

  2. 在函数内部,使用一个无限循环来等待用户输入。循环会不断尝试执行以下步骤,直到用户输入有效的浮点数为止:

    解读循环部分代码的含义:

    while True:
    try:
    value = float(input(prompt))
    return value
    except ValueError:
    print("输入无效的数字,请重新输入")
    1. while True::这创建了一个无限循环。循环体内的代码将反复执行,直到遇到 returnbreakcontinue等其他中断循环的关键词才会结束。

    2. try::这是一个异常处理块,用于尝试执行可能会引发异常的代码。

    3. value = float(input(prompt)):这一行代码首先使用 input(prompt) 显示提示信息 prompt,并获取用户输入的字符串。并尝试将其转换为浮点数。如果转换成功,将得到的浮点数赋值给变量 value

    4. return value:如果成功获取和转换浮点数,该值将通过 return 语句被返回给调用者,同时终止函数的执行。

    5. except ValueError::如果在 try 块中出现 ValueError 异常(即用户输入的字符串无法转换为浮点数),则执行以下代码块。

    6. print("输入无效的数字,请重新输入"):显示一条错误消息,提示用户输入无效。

    7. 如果没有出现return value,会重新进入while True:循环等待用户重新输入。
  3. 跳出循环在主程序部分,通过调用 float_input 函数,通过return value的返回值获取用户输入的两个浮点数 ab。这两个浮点数会在函数内部循环中进行验证,直到输入有效。

  4. 解读 value = float(input(prompt)) 这一行代码时,需要分解成几个部分来理解其含义:

    1. prompt: 这是一个参数,是传递给函数的提示信息,它会在用户输入时显示,以引导用户提供相应的值。

    2. input(prompt): 这部分是在控制台显示提示信息,并等待用户在命令行中输入内容。用户输入的内容会以字符串的形式被返回。

    3. float(...): 这是一个内置的 Python 函数,用于将传递给它的内容转换为浮点数。在这里,我们希望将用户输入的字符串转换为浮点数,以便进行数值计算。

    4. 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问题。

Python——第一章:用户交互的更多相关文章

  1. 简学Python第一章__进入PY的世界

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  2. Python第一章-基础知识

    第一章:基础知识 1.1 安装python.     直接官网下载最新的python然后默认安装就可以了,然后开始菜单里找到pyhton *.*.* Shell.exe运行python的交互shell ...

  3. python起源,变量,用户交互,流程语句

    1.Python的起源 Python是一门解释型弱类型编程语言. 特点:简单.明确.优雅 2.Python解释器 CPython官方提供的, 内部使用C语言来实现 PyPy,一次性把我们的代码解释成字 ...

  4. python第一章计算机基础

    第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 / 显示器 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 操作系统用 ...

  5. 4.python中的用户交互

    学习完如何写'hello world'之后,我们还是不太满意,因为这样代码就写死了,以后运行的时候都只打印一局固定的话而已. 但是,我想在程序运行后,自己手动输入内容怎么办,此时就要学习如何使用用户交 ...

  6. python第一章:简介与安装--小白博客

    Python简介 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...

  7. 学习python 第一章

    目录 第一章... 1 1:新建项目... 1 2:修改默认模板... 3 3:什么是变量... 3 4:重指向... 3 5:常量的表示... 4 6:格式化输出(三种方法)... 4 7:打印一个 ...

  8. 1.3 Python基础知识 - 用户交互及传递参数

    一.用户交互 用户交互方面,每种开发语言都有不同的方式,例如shell语言用的是,“read -p "What is  your name ? " ”.python中是什么样子的呢 ...

  9. Python基础之用户交互、流程控制、循环语句

    python的简洁性真的令人叹为观止,没有JAVA那种输入还要导个包,不学不知道,一学吓一跳啊! 我在学这些基础的时候,会把python和java.c做对比,这样更好的理解记忆! 用户交互(输入) i ...

  10. python基础(4):用户交互、if判断、while循环、break和continue

    1. 用户交互 使⽤input()函数,可以让我们和计算机互动起来 语法: 内容 = input(提⽰信息) 这⾥可以直接获取到⽤户输入的内容 content = input("你吃了么?& ...

随机推荐

  1. 逻辑漏洞挖掘之XSS漏洞原理分析及实战演练

    一.前言 2月份的1.2亿条用户地址信息泄露再次给各大公司敲响了警钟,数据安全的重要性愈加凸显,这也更加坚定了我们推行安全测试常态化的决心.随着测试组安全测试常态化的推进,有更多的同事对逻辑漏洞产生了 ...

  2. CocoaPods 在iOS开发中养活了这么多项目,它到底是个啥?

    对于iOS开发者而言,CocoaPods并不陌生,通过pod相关的命令操作,就可以很方便的将项目中用到的三方依赖库资源集成到项目环境中,大大的提升了开发的效率.CocoaPods作为iOS项目的包管理 ...

  3. Linux-Stream内存带宽及MLC内存延迟性能测试方法

    1.Stream内存带宽测试   Stream是业界主流的内存带宽测试程序,测试行为相对简单可控.该程序对CPU的计算能力要求很小,对CPU内存带宽压力很大.随着处理器核心数量的增大,而内存带宽并没有 ...

  4. 堆的原理以及实现O(lgn)

    大家好,我是蓝胖子,我一直相信编程是一门实践性的技术,其中算法也不例外,初学者可能往往对它可望而不可及,觉得很难,学了又忘,忘其实是由于没有真正搞懂算法的应用场景,所以我准备出一个系列,囊括我们在日常 ...

  5. VisionPro学习笔记(4)——PatInspect

    如果需要了解其他图像处理的文章,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice ...

  6. 记录一次gcc的编译

    在deepin23上编译gcc13.2 deepin20素以软件版本过老被人诟病,换成最新的deepin23之后情况大有好转,但是gcc版本为11.2,鄙人对此仍有意见,所以特意研究了如何编译一份较新 ...

  7. 【RocketMQ】Dledger模式下的日志复制

    RocketMQ在开启Dledger时,使用DLedgerCommitLog,其他情况使用的是CommitLog来管理消息的存储.在Dledger模式下,消息写入时Leader节点还需要将消息转发给F ...

  8. go语言 包依赖管理-构建完整的依赖项目:目录结构及包的调用

    目录结构: <home>/ |-- greetings/ |-- hello/1.分别进入对应目录创建以上目录结构 //bash切换到用户主目录 cd $HOMEPAHT$ //bash新 ...

  9. Mac 下使用 ffmpeg 制作 gif

    Mac 下使用 ffmpeg 制作 gif 公众号文章,gif要求  300帧数以内        .以下是从 mp4 转为 gif 的步骤. 步骤 ffmpeg 是著名的视频处理开源软件 brew ...

  10. "拍牌神器"是怎样炼成的(二)--- 键鼠模拟之AutoIt

    不同于上一篇的WinAPI方法,这次让我们来看另一个更简单.有效的键鼠模拟方案,即通过COM组件AutoItX实现键鼠模拟. AutoIt AutoIt是一个免费软件,它使用一种类似BASIC的脚本语 ...