我想输入多少受害者,然后能够输入每个受害者的姓名和年龄。
但我似乎无法围绕如何制作一个要求为每个受害者提供输入的循环。现在我输入一个输入,同样的输入被打印x次。
我可以看到它现在如何运作的逻辑,但我根本无法弄清楚如何做到这一点而不需要为" name"和#34;年龄"。
的5 x单独输入num_victims = input("How many victims: ")
inc_numbr = 1
v_name = input(str(inc_numbr) + "." + " Victims " + "name: ")
v_age = input(str(inc_numbr) + "." + " Victims " + "age: ")
inc_numbr += 1
v_numbr = 1
v_one = (f"__Victim:__ \n"
f"Name: {v_name}\n"
f"Estimated age: {v_age} years old.\n\n")
v_numbr += 1
v_two = (f"__Victim " + str(v_numbr) + ":__\n"
f"Name: {v_name}\n"
f"Estimated age: {v_age} years old.\n\n")
v_numbr += 1
v_three = (f"__Victim " + str(v_numbr) + ":__\n"
f"Name: {v_name}\n"
f"Estimated age: {v_age} years old.\n\n")
v_numbr += 1
v_four = (f"__Victim " + str(v_numbr) + ":__\n"
f"Name: {v_name}\n"
f"Estimated age: {v_age} years old.\n\n")
v_numbr += 1
v_five = (f"__Victim " + str(v_numbr) + ":__\n"
f"Name: {v_name}\n"
f"Estimated age: {v_age} years old.\n")
v_numbr += 1
为输出格式示例添加:
__受害者:__
姓名:xxxxx
年龄:xxxx
__受害者2:__
姓名:xxxxx
年龄:xxxx
等..
答案 0 :(得分:1)
您需要将其包装在for
循环中:
number_of_victims = int(input("How many victims? "))
victim_names = []
victim_ages = []
for i in range(1, number_of_victims+1):
victim_names.append(input("Name of victim "+str(i)+": "))
victim_ages.append(input("Age of victim "+str(i)+": "))
print(victim_names, victim_ages)
请注意我是如何在victim_names
循环之外创建victim_ages
和for
对象的,以便它们不会被覆盖。这些对象是列表 - 它们最初是空的,但我们append
循环内的for
数据。
如果你愿意,你可以使用字典对象代替受害者,但正如Alex F指出的那样,如果你有两个同名的受害者,这可能会导致数据被覆盖:
number_of_victims = int(input("How many victims? "))
victims = dict()
for i in range(1, number_of_victims+1):
name = input("Name of victim "+str(i)+": ")
age = input("Age of victim "+str(i)+": ")
victims[name] = int(age)
print(victims)
将来,当遇到这样的问题时,您可能会发现编写伪代码很有帮助。这就像是一个计划代码的样子,而不必担心实际编写代码的语法和规则。例如,此问题的一些伪代码可能如下所示:
在回答评论中的问题时,如何格式化打印,你可以这样做:
for v in range(number_of_victims):
print("Victim ",str(v+1),":")
print("Name:",victim_names[v])
print("Age:",victim_ages[v])
答案 1 :(得分:1)
循环用于需要多次运行的代码,因此如果您需要一次询问受害者人数,然后输入多个name
和age
,则可以这样做:
number_of_victims = int(input("Enter the number of victims: "))
victims = []
for i in range(number_of_victims):
name = input("Victim #{} name: ".format(i+1))
age = input("Victim #{} age: ".format(i+1))
victims.append([name, age])
通过这种方式,您可以获得一个列表,其中每个元素都是名称和年龄的列表。现在,您可以使用i
访问文件号victims[i-1]
(因为列表索引从0开始)。
另一种选择是使用字典:
number_of_victimes = int(input("..."))
victims = {}
for i in range(number_of_victims):
name = input("...")
age = input("...")
victims[i] = [name, age]
您可以使用i
访问文件号victims[i-1]
(因为range
也从0开始),但如果您编写for i in range(1, int(number_of_victims)+1):
,则可以更改此项。现在每个字典键都是“人”索引(从1开始),而不是“计算机”索引(从0开始),因此您可以使用i
访问相同的文件号victims[i]
。
或者,您可以创建一个字典,其中每个键都是受害者的名称,但如果您有两个相同的名称,则使用该名称添加的上一个键值对将被覆盖:
number_of_victimes = int(input("..."))
victims = {}
for i in range(number_of_victims):
name = input("...")
age = input("...")
victims[name] = int(age)