Проблема цикла программы Python - PullRequest
0 голосов
/ 13 декабря 2018

Я делаю программу на Python.Моя задача - попросить пользователя ввести информацию о заработной плате для компании.Настройте цикл, который продолжает запрашивать информацию, пока пользователь не введет «ВЫПОЛНЕНО».Для каждого сотрудника задайте три вопроса:

  1. имя и фамилия
  2. часов, отработанных на этой неделе (только разрешить 1 - 60)
  3. почасовая оплата (только разрешить 6.00 -20.00)

Вот мой код:

while True: #initiate loop
    strNames = input("Enter the employee's first and last name:")
    strHours = input("Enter total number of hours worked this week:")
    strWage = input("Enter employee's hourly wage:")
    if strNames =="DONE":
        break #breaks loop
    else:
        if strHours < "1" or strHours > "60":
            print("Error")
        if strWage < "6" or strWage > "20":
            print("Error")

При запуске программы и вводе информации она печатает:

"Ошибка вводаимя и фамилия сотрудника: "

Кто-нибудь может мне помочь / направить меня в правильном направлении?

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Как указано в предыдущем посте, вы не можете сравнивать строки.Что вы можете сделать, это привести их как целые числа, а затем сделать сравнение.

Последнее требование

Настройка цикла, который продолжает запрашивать информацию, пока пользователь не введет "ВЫПОЛНЕНО"

Вы делаете это только один разВ вашем приложении после того, как пользователь ответит на все вопросы.Я не уверен, что ты намеревался это сделать?Если вы предпочитаете, чтобы у пользователя была возможность выйти из приложения в любой момент, вы можете изменить свой код, как я это сделал ниже

questions = ["Enter the employee's first and last name:",
             "Enter total number of hours worked this week:",
             "Enter employee's hourly wage:"]
var = ['strNames', 'strHours', 'strWage']
while True: #initiate loop
    x = 0 # declare a variable for incrementing list 'var'
    for q in questions:
        var[x] = input(q)
        if var[x].upper() =="DONE": # checking if the user entered 'DONE' 
            break # breaks inner for loop
        x += 1 # increment list count by 1 
    try:
        if int(var[1]) < 1 or int(var[1]) > 60:
            print("\n>>> Hours worked this week error\n")
        if int(var[2]) < 6 or int(var[2]) > 20:
            print("\n>>> Hourly wage error\n")
    except: # catches any exception errors
        # if exception occurs, come in here and break out of loop
        break # break while loop 

Комментарии, добавленные к приведенному выше коду, поэтому, пожалуйста, прочитайте для уточнения,

0 голосов
/ 14 декабря 2018
while True: #initiate loop
    strNames = input("Enter the employee's first and last name: ")
    if strNames =="DONE":
        break #breaks loop

    strHours = int(input("Enter total number of hours worked this week: "))
    if strHours < 1 or strHours > 60:
        print("Error 1")
        break

    strWage = int(input("Enter employee's hourly wage: "))
    if strWage < 6 or strWage > 20:
        print("Error 2")
        break

    if strNames =="DONE":
        break #breaks loop
0 голосов
/ 13 декабря 2018

Вы сравнили строки, а не числовые значения.Поскольку "20" < "6", каждая строка выполнит одно из двух ваших условий и напечатает Error.

  1. Просмотрите материалы вашего класса;научиться распознавать соответствующий тип данных для приложения и работать с этим типом данных.В этом случае вам необходимо преобразовать входные данные в int и работать с числовыми значениями.
  2. Потренируйтесь в инкрементном программировании: наберите несколько строк, прежде чем добавлять новые.В этом примере вы прошли два шага за рабочим кодом, что усложняет отладку.
...