python - 在 Python 中使用 input() 作为 range() 的参数
问题描述
input() 如何作为 Python 中 range() 的参数工作?
例如:
假设用户输入多个数字 10 和 2 或更多字面意思是“10 2”
for i in range(int(input())):
try:
a,b=map(int,input().split())
print(a//b)
except Exception as e:
print("Error Code:",e)
那么 for 循环使用什么范围呢?是 (0,10), (0,2) 还是别的什么?或者,换一种说法,如果用户输入多个数字,范围使用哪个数字作为上限?更一般地说,我试图在这里理解 for 循环的目的以及为什么代码不能只是:
try:
a,b=map(int,input().split())
print(a//b)
except Exception as e:
print("Error Code:",e)
解决方案
input()
值将存储为str
.
这一切都取决于用户输入的内容。您提供的这段代码非常糟糕,因为用户必须猜测输入什么以及何时输入。但逻辑如下:
如果您输入单个值,则int(input())
将该值转换为整数。例如,如果您输入2
,input()
则将保存字符串"2"
并int("2")
产生整数2
。
如果您有多个值,那么您无法int
立即转换为,因为到底是什么int("2 10")
意思?这就是为什么您必须使用.split()
, 将这些多个值分隔为许多奇异值。例如,如果您运行x = input()
并输入2 10
,x
则将保存字符串"2 10"
。现在,"2 10".split()
产生字符串列表 ["2", "10"]
。
这段代码map(int,input().split())
用于将此字符串列表转换为整数列表。它使用函数将每个值映射int
到一个新值以对其进行转换。
既然已经确定了,那么for
使用range
.
range
根据文档,该类型在其构造函数中可能有一个参数stop或三个参数(start、stop [、step])。这些参数都是整数。
因此,来自的值input()
必须适合这种结构。如果您2 10
输入 input 并尝试 do range("2 10")
,您将收到错误消息。因为您正在传递一个类型的参数str
。这就是为什么你必须先转换为integer
。"2 10"
但是正如我们刚刚讨论的那样,您不能立即转换为整数。这就是为什么您必须split
首先,然后将每个值转换为int
,然后将这些作为参数传递给range()
.
因此,总而言之,给定x = input()
并输入2 10
,以下是不起作用的:
>>> int(x)
>>> range(x)
什么工作:
>>> a,b=map(int,input().split())
>>> range(a, b)
推荐阅读
- java - 如何从 Facebook 获取用户照片
- java - 如何使用 java.net InetAddress 或其他 API 知道 IP 地址
- c# - SynchronizationContext.Post 到 UI 方法 - 更新多个标签
- typescript - 由于 TypeOrmModule 而在 Heroku 上构建的 NestJS 应用程序崩溃,没有准确的错误消息
- ios - 未从 Tabbar 控制器调用委托方法
- git - DOWNLOAD_SOURCE 阶段中的 AWS Codebuild 错误
- java - Spring Security 使用 CSRF 令牌,即使未指定并关闭
- wordpress - 尝试在 Wordpress 中呈现 FusionCharts 甘特图时出现问题
- angular-cli - 为 WebStorm 2020.1.2 启用 angular.json 架构
- android - 错误:无法将当前线程附加到 Java VM