Python 向列表中的某些用户提供折扣
我想给25岁以下的用户打31%的折扣,给40岁以上的用户打50%的折扣 另一方面,对于不住在马德里的用户,只有5%的折扣Python 向列表中的某些用户提供折扣,python,Python,我想给25岁以下的用户打31%的折扣,给40岁以上的用户打50%的折扣 另一方面,对于不住在马德里的用户,只有5%的折扣 students = [ ('Marcos', 23, 'Madrid', 850, '2388711341'), ('Elena', 35, 'Madrid', 360, '0387700342'), ('Carmen', 21, 'Getafe', 50, '0014871388'), ('Carlos', 41, 'Madrid', 58
students = [
('Marcos', 23, 'Madrid', 850, '2388711341'),
('Elena', 35, 'Madrid', 360, '0387700342'),
('Carmen', 21, 'Getafe', 50, '0014871388'),
('Carlos', 41, 'Madrid', 580, '00887118456'),
('Maria', 28, 'Madrid', 150, '587')
]
for item in students:
student, age, city, debt, id = item
if age < 25
else debt * 0.69
if age > 40
else debt * 0.5
if city is not 'Madrid'
else debt * 0.95
print(f'Name: {student} - Debt: {debt}')
学生=[
('Marcos',23,'Madrid',850,'2388711341'),
('Elena',35',马德里',360',0387700342'),
('Carmen',21,'Getafe',50,'0014871388'),
('Carlos',41,'Madrid',580,'00887118456'),
('Maria',28,'Madrid',150,'587')
]
对于学生中的项目:
学生、年龄、城市、债务、id=项目
如果年龄<25岁
其他债务*0.69
如果年龄>40岁
其他债务*0.5
如果城市不是“马德里”
其他债务*0.95
打印(f'Name:{student}-债务:{Debt}')
打印示例:
姓名:Marcos-债务:586,5
姓名:Elena-债务:360
姓名:卡门-债务:47,5
姓名:卡洛斯-债务:290
姓名:Maria-债务:150您必须执行以下操作:
for item in students:
# check if age < 25
if(item[1] < 25):
#add discount of 31%
item[3] = item[3] * (1-0.31)
对于学生中的项目:
#检查年龄是否小于25岁
如果(第[1]项<25):
#加上31%的折扣
第[3]项=第[3]项*(1-0.31)
但是,我真的建议您首先改进数据。
我的意思是,与其使用列表,不如使用字典。甚至可能是字典里的字典。这样,您就可以使用name或id等键来访问数据。在上面的代码中,我必须使用数字——这很难理解
这里有一个使用字典的链接
关于你的更新代码
for item in students:
student, age, city, debt, id = item
#check age
if age < 25:
debt *= (1-0.31)
elif age > 40:
debt *= 0.5
print(f'Name: {student} - Debt: {debt}')
对于学生中的项目:
学生、年龄、城市、债务、id=项目
#检查年龄
如果年龄<25岁:
债务*=(1-0.31)
elif年龄>40岁:
债务*=0.5
打印(f'Name:{student}-债务:{Debt}')
下面的代码使用“Student”作为一种轻量级数据结构。它声明名为“学生”的学生列表。 它运行在此列表上,并使用新的学生对象(在重新计算债务字段后)填充名为“after_discount_students”的新列表 有问题吗
import collections
Student = collections.namedtuple('Student', 'name age city debt id')
students = [
Student('Marcos', 23, 'Madrid', 850, '2388711341'),
Student('Elena', 35, 'MaDrid', 360, '0387700342'),
Student('Carmen', 21, 'Getafe', 50, '0014871388'),
Student('Carlos', 41, 'MAdrid', 580, '00887118456'),
Student('Maria', 28, 'Madrixx', 150, '587')
]
after_discount_students = []
def discount_calc(student):
if student.age < 25:
return 0.69
elif student.age > 40:
return 0.5
else:
return 1
for student in students:
after_discount_students.append(
Student(student.name, student.age, student.city, discount_calc(student) *
student.debt, student.id))
for student in after_discount_students:
print(student)
学生=[
('Marcos',23,'Madrid',850,'2388711341'),
('Elena',35',马德里',360',0387700342'),
('Carmen',21,'Getafe',50,'0014871388'),
('Carlos',41,'Madrid',580,'00887118456'),
('Maria',28,'Madrid',150,'587')
]
对于学生中的项目:
学生、年龄、城市、债务、id=项目
如果年龄<25岁:
债务*=(1-0.31)
打印(f'Student:{Student}-债务:{Debt}')
elif年龄>40岁:
债务*=(1-0.5)
打印(f'Student:{Student}-债务:{Debt}')
elif city.startswith('G'):
债务*=(1-0.05)
打印(f'Student:{Student}-债务:{Debt}')
其他:
打印(f'Student:{Student}-债务:{Debt}')
你的问题是什么?我如何打印学生的姓名和所需的折扣?基于这些:1)我想给所有25岁以下的用户打31%的折扣,给40岁以上的用户打50%的折扣。2) 另一方面,对于不住在马德里的用户,只有5%的折扣。使用以下格式:print(f'Name:{student}-Debt:{Debt}'),在询问之前至少尝试一下。所以可以帮忙,但不应该做作业。。。提示:如果/elif/else是第一种方法。你是对的,我已经对我的问题进行了编辑,以便更清楚。我尝试了前面的代码,但结果是:语法错误:无效语法更新的答案格式不正确。这显然是一种更好的方法。然而,我猜Eduardo只是在学习python。不知道这是否会带来很多无法解释的东西。是的,你说得对,我正在学习Python。。。很抱歉没有这么明确,爱德华多。我在代码之前添加了注释。请随意提问:-)注意:必须使用python 3.6才能在打印语句中使用f-strings
。
Student(name='Marcos', age=23, city='Madrid', debt=586.5, id='2388711341')
Student(name='Elena', age=35, city='MaDrid', debt=360, id='0387700342')
Student(name='Carmen', age=21, city='Getafe', debt=34.5, id='0014871388')
Student(name='Carlos', age=41, city='MAdrid', debt=290.0, id='00887118456')
Student(name='Maria', age=28, city='Madrixx', debt=150, id='587')
students = [
('Marcos', 23, 'Madrid', 850, '2388711341'),
('Elena', 35, 'Madrid', 360, '0387700342'),
('Carmen', 21, 'Getafe', 50, '0014871388'),
('Carlos', 41, 'Madrid', 580, '00887118456'),
('Maria', 28, 'Madrid', 150, '587')
]
for item in students :
student, age, city, debt, id = item
if age < 25 :
debt *= (1-0.31)
print (f'Student: {student} - Debt: {debt}')
elif age > 40 :
debt *= (1-0.5)
print (f'Student: {student} - Debt: {debt}')
elif city.startswith('G') :
debt *= (1-0.05)
print (f'Student: {student} - Debt: {debt}')
else :
print (f'Student: {student} - Debt: {debt}')