0

私はあなたが従業員の給料を集めるクラスの宿題をしていて、困惑しています. 「彼らの給料は何ですか?」という部分をループし続けるので、給料がいくらかを尋ね続けるのではなく、給料が従業員と一致する場所に修正するにはどうすればよいですか?これは私がこれまでに持っているものであり、ヒントやアドバイスがあれば助けてください。(私はあなたに私の仕事をお願いしているわけではありません。ヒントやアドバイスが欲しいだけです)

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: "))
4

3 に答える 3

1

このようなことをもっと試してみましょう:

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メソッドが必要ないことに注意してください。

元のバージョンの問題:

  1. empsalaryメソッドでは、ループfor i in range(salary)は最新の従業員の SALARY をループします。従業員数をループしたいと思います。それが私がしたことだとわかりますか?
  2. これらの if ステートメントは、特に興味深いことをトリガーすることはありません。これら 2 つの if ステートメントの目的は何でしたか?
  3. nameとをリストとして設定しましたsalaryが、それらをリストのように扱っていませんでした。このバージョンでは、入力したすべてのデータを 2 つのリストに保存して、後で使用できるようにします (最高給と最低給を見つけます)。
于 2013-06-28T21:39:07.690 に答える
0

私は Python の専門家ではありませんが、あなたの問題が何であるかがわかると思います。

ここのコードによると、ユーザーに任意のサイズの数値を求めています。この数値を入力すると、プログラムは FOR ループ [salary] を何回か実行します。これは、従業員の給与を 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: "))

これはあなたが必要とすることをするはずです。任務頑張ってください!

于 2013-06-28T21:43:51.290 に答える