2013-06-28 4 views
0

저는 직원의 급여를 모으는 수업에 대한 과제를 수행하고 있습니다. 연봉이란 무엇인가를 물어 보는 대신 직원과 연봉이 일치하는 곳으로 어떻게 해결할 수 있습니까? 이것은 내가 지금까지 가지고있는 조언 조언으로 나를 도와주세요.도움이 필요합니다

for i in range(salary): 

이 반복됩니다 당신이이하는 생각이 줄은하지 않습니다

def main(): 
    name = [] 
    salary = [] 
    n = 0 
    n = int(input("How many employee's will you be entering?: ")) 
    for i in range(n): 
     name = input("Enter the employees name: ") 
    empsalary(name,salary) 

def empsalary(empname,esalary): 
    salary = 0 
    salary = int(input("What is their salary: ")) 
    for i in range(salary): 
     if salary < 1 or salary > 200000: 
      salary = int(input("What is their salary: ")) 
     if salary > 0 and salary < 200000: 
      salary = int(input("What is their salary: ")) 

답변

1

(. 나는/조언 당신이 내 일을하기 위해 난 그냥 몇 가지 팁을 원하는 요구하고 있지 않다) salary 번, i의 값을 0부터 salary-1까지 순차적으로 할당한다.

그 이유는 루프의 본문에서 입력을 반복하는 이유입니다. 또한 range(salary)이 루프에 대한 입력시 계산되고 i에 할당 될 숫자를 포함하는 목록으로 평가되기 때문에 본문에서 salary을 변경하면 문제가되지 않습니다.

업데이트 :

또한

, 이들 중 하나 조항의 경우를 트리거하지 않습니다 salary의 값이없는;

if salary < 1 or salary > 200000: 
     salary = int(input("What is their salary: ")) 
    if salary > 0 and salary < 200000: 
     salary = int(input("What is their salary: ")) 

업데이트 2 :이 코드에서

봐는 :

for i in range(n): 
    name = input("Enter the employees name: ") 
empsalary(name,salary) 

당신은 모든 직원 이름을 요구 한 후, 한 번만 empsalary를 호출합니다. 나는 이것이 당신이 원하는 것이 아니라고 말할 수 있습니다.

업데이트 3 : 캡처 한 name을 사용하여 실제로 아무 것도하지 않습니다. 다음 반복에서 겹쳐 씁니다. 그러지 마세요.

업데이트 4 : 또한 salary으로 아무 것도 수행하지 않으며 실제로 함수에서 아무 것도 반환하지 않습니다.

+0

그래서 "for"루프를 사용하지 않아야합니까? 그리고 나는 그것이 내가 일한이 부분을 다룰 수있을 것이라고 생각했습니다. 나는 범위 안에 (n) : 이름 = 입력 ("직원 이름을 입력하십시오 :") – ChrisD93

+0

나는 당신의 추론을 따르지 않습니다. 급여가 용납 될 수 없는지를 테스트하기 위해 조건과 함께 while 루프를 사용하십시오. – Marcin

+0

업데이트 된 부분을 보았고 "salary = 0"을 입력하고 empsalary = salary 작업을하는 동안하겠습니까? – ChrisD93

1

좀 더 이런 식으로 뭔가를 해보자 : 나는 empsalary 방법을 필요로하지 않았다

def main(): 
    name = [] 
    salary = [] 

    n = 0 
    n = int(input("How many employee's will you be entering?: ")) 

    for i in range(n): 
     name.append(input("Enter the employees name: ")) 
     salary.append(int(input("What is their salary: "))) 

    print_high_and_low(name, salary) 

def print_high_and_low(name, salary): 
    """Find maximum and minimum salaries""" 
    # find maximum salary 
    max = 0 
    for i in range(len(salary)): 
     if salary[i] > max: 
      max = salary[i] 
      max_index = i 

    # find minimum salary 
    min = 9999999 # Smarter would be: sys.maxint (if you import sys) 
    for i in range(len(salary)): 
     if salary[i] < min: 
      min = salary[i] 
      min_index = i 

    print name[max_index] + " has the highest salary of: " + str(max) 
    print name[min_index] + " has the lowest salary of: " + str(min) 

공지 사항. 원래 버전와

문제 : 당신의 empsalary 방법 for i in range(salary) 루프 최근 직원의 급여를 통해 루프에서

  1. . 나는 당신이 종업원의 수를 반복하고 싶다고 생각한다. 그게 내가 한 짓인지 알 수 있니?
  2. 당신의 if 문이 특히 흥미로운 작업을 실행하지 않습니다. 이 두 가지 if 문에 대한 목표는 무엇입니까?
  3. namesalary을 목록으로 설정했지만 목록과 같이 취급하지 않았습니다. 이 버전에서는 나중에 사용하기 위해 두 개의 목록에 입력 된 모든 데이터를 저장합니다 (최대 및 최소 급여 찾기).
+0

이것은 문제를 해결하지만 OP의 코드가 무엇이 잘못되었는지 설명하지 않습니다. – Marcin

+0

나는 그것을했을 것이지만 슬프게도, 선생님은 우리가 이것을 위해 "def"모듈 함수를 사용해야한다고 말했다. – ChrisD93

+0

@ThatOneDude "def 모듈 기능"이라는 문구는 어디에서 유래됩니까? 그것은 정확하지 않습니다. – Marcin

0

저는 파이썬에 익숙하지 않지만 문제가 무엇인지 알 것 같습니다.

여기에 나온 코드에 따르면 사용자에게 원하는 크기의 숫자를 묻습니다. 일단이 번호를 입력하면 프로그램은 FOR 루프 [급여] 횟수만큼 실행합니다. 직원의 급여를 무언가로 10,000만큼 크게 만들면 루프가 10,000 번 실행하게되므로 문제가 될 수 있습니다!

저는 급여가 0에서 200,000 사이인지 확인하려고 노력하고 있으며 급여가이 범위를 벗어나면 급여를 요청할 것입니다. 이것이 사실이라면 while 루프는 몇 줄의 코드를 제거하면서 트릭을 수행해야합니다.

def empsalary(empname,esalary): 
    salary = 0 
    salary = int(input("What is their salary: ")) 
    while (salary < 1 or salary > 200000): 
     salary = int(input("What is their salary: ")) 

이렇게하면 필요한 작업을 수행 할 수 있습니다. 너의 임무에 행운을 비네!

관련 문제