python - 如何在 python 中为 for 循环手动输入?
问题描述
我正在尝试手动输入并在 for 循环中使用这些输入在 CSV 文件中吐出结果,但我无法让它工作。
我试图在 for 循环之外创建一个输入变量,该变量接受一个似乎没有传递到 for 循环中的 int 值。我还尝试手动输入内存量和操作系统名称。目标是吐出服务器名称。
CSV 文件:
Name,CPU,Memory,OS
server1,2,4gb,windows 7
server2,4,2gb,arch linux
server3,8,4gb,ubuntu linux
server4,4,2gb,windows server
server5,2,4gb,windows 7
Python代码:
import csv
entercpu = int (input("Enter number of CPU: "))
#enteros = input("Enter the OS: ")
#entermemory = input("Enter the amount of memory: ")
with open('test.csv', 'rb') as csv_file:
dict_reader = csv.DictReader(csv_file)
for d in dict_reader:
if d['NumCpu'] == 'entercpu' and d['Guest OS'] == 'windows 7' and d['MemoryGB'] == '8':
print('Name: {Name}, CPU: {NumCpu}, Memory: {MemoryGB}, OS: {Guest OS}'.format(**d))
输出应为:名称:
Name: Server 1, CPU: 4, Memory: 8, OS: windows 7
和
Name: Server 5, CPU: 4, Memory: 8, OS: windows 7
解决方案
尝试使用这个:
if d['NumCpu'] == str(entercpu) and d['Guest OS'] == 'windows 7' and d['MemoryGB'] == '8':
print('Name: {Name}, CPU: {NumCpu}, Memory: {MemoryGB}, OS: {Guest OS}'.format(**d))
在比较它们时,您需要确保您的类型相同。例如4 == "4"
返回False
但str(4) == "4"
给出True
我认为当您键入时'entercpu'
这就是您的意思,但是当您尝试从一种类型或另一种类型转换时,您调用构造函数(即str(4)
或int("4")
)。
希望这可以帮助!
灰
推荐阅读
- python - 浏览器上 tensorflowjs 中的“未知层:Lambda”
- javascript - 量角器,如何使用父亲的类名获取图像元素
- php - 使用 PHP 获取 JSON 数据时遇到问题
- hyperledger-fabric - 使用 Java-SDK 实例化 Chaincode 时出错
- reactjs - 如何在reactjs中更改组件时发送图像引发后期请求
- c++ - 无法为 Boost C++ 库生成 PDF 文档
- php - Apache2 和 Linux Mint 18.3 中的 PHP 错误
- r - 如何从R中的公司名称返回对股票代码名称的查询
- python - pybind11 与 numpy 的矩阵乘积
- python - 在 Django 管理界面中验证新用户密码