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))

输出应该是:姓名: 名称:服务器 1,CPU:4,内存:8,操作系统:windows 7
名称:服务器 5,CPU:4,内存:8,操作系统: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" 返回 Falsestr(4) == "4" 返回 True

我想当你输入 'entercpu' 时,这就是你想要做的,但是当你试图从一种或另一种类型进行转换时,你调用了构造函数(即 str(4)int("4"))。

希望这对您有所帮助!

https://stackoverflow.com/questions/56809586/

相关文章:

html - 仅适用于移动设备的引导轮播

angular - Uncaught TypeError : ace. acequire 不是函数

swagger - 如何在开放式 API 规范中为字符串类型的属性指定空字符串值作为默认值

pyspark - 如何将 FPGrowth 项集限制为 2 或 3

python - 在 zipapp 存档中嵌入 numpy

node.js - GCP 应用引擎 : Random pending requests for s

c# - 在不更改 url 的情况下显示自定义页面

c++ - 使用 Microsoft Visual Studio 运行 C++ "hello wor

c# - 如何在 Flutter 中使用外部 DLL(Dot Net)?

rust-cargo - 如何修复 cargo 的 "failed to parse manifes