Python 需要帮助循环吗
我正在为班级做一项作业,你们在班上收取你们员工的工资,我被难倒了。它不断循环“他们的工资是多少:”部分,那么我如何才能将其固定到工资与员工匹配的位置,而不是不断询问工资是多少?这是我到目前为止所拥有的,请帮我提供任何提示和建议(我不是要求你做我的工作。我只是想要一些提示/建议)Python 需要帮助循环吗,python,python-3.x,Python,Python 3.x,我正在为班级做一项作业,你们在班上收取你们员工的工资,我被难倒了。它不断循环“他们的工资是多少:”部分,那么我如何才能将其固定到工资与员工匹配的位置,而不是不断询问工资是多少?这是我到目前为止所拥有的,请帮我提供任何提示和建议(我不是要求你做我的工作。我只是想要一些提示/建议) def main(): 名称=[] 工资=[] n=0 n=int(输入(“您将输入多少名员工?:”) 对于范围(n)中的i: 名称=输入(“输入员工姓名:”) 员工薪酬(姓名、薪酬) def empsalary(emp
def main():
名称=[]
工资=[]
n=0
n=int(输入(“您将输入多少名员工?:”)
对于范围(n)中的i:
名称=输入(“输入员工姓名:”)
员工薪酬(姓名、薪酬)
def empsalary(empname,esalary):
工资=0
薪水=int(输入(“他们的薪水是多少:”)
对于范围内的i(工资):
如果工资<1或工资>200000:
薪水=int(输入(“他们的薪水是多少:”)
如果工资>0且工资<200000:
薪水=int(输入(“他们的薪水是多少:”)
这行代码的作用与您认为的不同:
for i in range(salary):
这将迭代salary
次,依次将i
值0
分配给salary-1
这就是为什么它在循环体的输入上不断循环。如果您更改正文中的salary
,这也无关紧要,因为范围(salary)
在进入循环时进行计算,并计算为包含将分配给i
的数字的列表
更新:
此外,salary
的任何值都不会触发其中一个if子句
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: "))
在询问所有员工姓名后,您只需调用一次empalary
。我知道这不是你想要的
更新3:我还注意到,您实际上并没有对捕获的名称执行任何操作。您只需在下一次迭代中覆盖它们。不要那样做,把它们储存起来
更新4:您也不会对工资执行任何操作,也不会从函数中实际返回任何内容。让我们尝试类似的操作:
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)
def main():
名称=[]
工资=[]
n=0
n=int(输入(“您将输入多少名员工?:”)
对于范围(n)中的i:
name.append(输入(“输入员工姓名:”)
palary.append(int(输入(“他们的工资是多少:”))
打印高和低(姓名、工资)
def打印高和低(姓名、工资):
“”“查找最高和最低工资”“”
#找到最高工资
最大值=0
对于范围内的i(len(工资)):
如果工资[i]>最大值:
最高=工资[i]
最大指数=i
#找到最低工资
min=9999999#更智能的是:sys.maxint(如果导入sys)
对于范围内的i(len(工资)):
如果工资[i]
请注意,我不需要empalary
方法
原始版本的问题:
在您的empalary
方法中,您的循环for i In range(salary)
循环您最近一位员工的工资。我想你应该考虑一下员工人数。你能看到我就是这么做的吗
你的那些if语句永远不会触发你去做任何特别有趣的事情。对于这两个if语句,您的目标是什么
您将name
和salary
设置为列表,但您没有将它们视为列表。在此版本中,您将保存在两个列表中输入的所有数据,以供以后使用(查找最高和最低工资)
我不是Python方面的专家,但我想我明白了您的问题所在
根据这里的代码,您要求用户提供任意大小的数字。一旦他们输入了这个数字,程序就会执行FOR循环[salary]多次。如果您将员工的工资设置为10000,这可能是一个问题,因为这将导致循环执行10000次
我猜你是想确保工资在0到200000之间,如果工资超出这个范围,那么程序会继续要求工资。如果确实是这样,那么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: "))
def empalary(empname,esalary):
工资=0
薪水=int(输入(“他们的薪水是多少:”)
而(工资<1或工资>200000):
薪水=int(输入(“他们的薪水是多少:”)
这应该可以满足你的需要。祝你任务顺利 所以,我不应该使用“for”循环?我只是觉得它会起作用,因为这部分我确实起作用了。对于范围(n)中的i:name=input(“输入员工姓名:”),我不理解您的推理。使用带有条件的while
循环来测试薪资是否不可接受。我看到了您更新的部分,我将“salary=0”,而empalary=salary有效吗?@thatone没有。为什么?想想循环的目的是什么。我真的很讨厌这些东西。但我认为这会起作用,因为薪水和薪水是同一件事的一部分。所以我想既然他们是,他们就必须能够=彼此。这解决了问题,但并不能解释OP代码的具体错误。我本来会这么做的,但很遗憾,我的老师说我们需要使用“def”模块函数来实现这一点。@thatonede“def模块函数”这个短语从何而来?不正确。我要用它们来找出工资最高和最低的员工。@Thatone我还添加了一个方法来找出工资最高和最低的员工。有更简洁的方法可以做到这一点,但我认为这是最容易阅读和理解的。
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)
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: "))