Как мне взять ручной ввод в python для цикла for? - PullRequest
2 голосов
/ 28 июня 2019

Я пытаюсь взять ручные входы и использовать эти входы внутри цикла for, чтобы выплевывать результаты в CSV-файле, и я не могу заставить его работать.

Я попытался создать входную переменную вне цикла for, которая принимает значение int, которое, похоже, не передается в цикл for. Я также пытаюсь вручную ввести объем памяти и название ОС. Цель состоит в том, чтобы выложить имя сервера.

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

1 Ответ

0 голосов
/ 28 июня 2019

Попробуйте использовать это:

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

Надеюсь, это поможет!

Ash

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...