2016-10-02 69 views
-2

问题1:如何添加字典与询问用户,I.E.输入(“写运动员的名字”),输入(“写经过的时间!”)按值排序并正确打印键和值。 PYTHON

问题2: 我想作这样的输出。 底下我的代码....草稿:)

import operator 

字典

runners = {"John": 9, "Mike": 2, "Venera": 4} 

输出:

1st. "Entered runner name ", came at, "input time" 
2nd. "Entered runner name ", came at, "input time" 
3rd. "Entered runner name ", came at, "input time" 

下面就从排序至少更

s = sorted(runners.items(), key=operator.itemgetter(1)) 
print(s) 

示例会让您充分理解我的问题。所以,示例代码是这样的,我只是想让它更容易。

names =[] 
array_times = [] 

循环它的问题,在范围(3)不写一堆投入 对于我:

name=input("Please write the name of Runner!") 
    #Appending name to the array name above! 
    names.append(name) 
    time_elapsed = float(input("Please write the time you spend!")) 
    #Appending it to the array above! 
    array_times.append(time_elapsed) 
# Just to make it easier to understand, assigning the values in arrays above to variables. 
runner1= names[0] 
runner2=names[1] 
runner3=names[2] 
time1=array_times[0] 
time2=array_times[1] 
time3=array_times[2] 

写作的if-else语句来检查哪个是哪个地方。

if time1<time2 and time1<time3 and time2<time3:#First winner, second in second, third is last. 
    print (runner1, "wins! His time is", time1, runner2, "is second place. His time is", time2, "and ", runner3, "is third place. his time is ", time3) 
elif time2<time1 and time2<time3 and time1<time3:#Second winner, first in second place, third is last. 
    print (runner2, "wins! His time is", time2, runner1, "is second place. His time is", time1, "and ", runner3, "is third place. his time is ", time3) 
elif time3<time1 and time3<time2 and time1<time2:#Third winner, First is second, second is last. 
    print (runner3, "wins! His time is", time3, runner1, "is second place. His timae is", time1, "and ", runner2, "is third place. his time is ", time2) 
elif time3<time1 and time3<time2 and time2<time1:#Third winner, second is second, first is last. 
    print (runner3, "wins! His time is", time3, runner2, "is second place. His time is", time2, "and ", runner1, "is third place. his time is ", time1) 
elif time2<time1 and time2<time3 and time3<time1:#Third winner, second is second, first is last. 
    print (runner2, "wins! His time is", time2, runner3, "is second place. His time is", time 
+2

* *一个问题,请。 –

回答

0

python3

import operator 

runners = {} 

for x in range(3): 
    name = input("name: ") 
    elapsed_time = int(input("time: ")) 
    runners[name] = elapsed_time 

templates = [ 
    "{name} wins! His time is {time}.", 
    "{name} is in second place. His time is {time}", 
    "and {name} is in third place. His time is {time}" 
] 

for idx, (name, elapsed_time) in enumerate(sorted(runners.items(), key=operator.itemgetter(1))): 
    print(templates[idx].format(name=name, time=elapsed_time), end=" ") 
print() 
+0

这适用于我。谢谢。但。 你能解释一下你的代码吗? (runners.items(),key = operator.itemgetter(1))): print(templates [idx])。格式(名称=名称,时间= elapsed_time),结束=“”) print() –

+0

1)它只是'name'与'时间'在'runners'字典''https://docs.python.org/ 3 /库/ stdtypes。html#dict 2)'runners'按值(时间)排序,'enumerate'返回迭代的当前步骤,0,1,2在你的情况下,然后你用这个'idx'请求'templates'进行字符串和格式化你的跑步者的当前“位置” 第一次(第一次)迭代'idx'将为0,所以'templates [0]'将返回第一个字符串 - '“{name}胜利!他的时间是{time}。” ',在下一次迭代中(第二位)'idx'将为1,我们将从'templates'等第二个字符串 –

0

如蟒提到doc

最好是认为一个字典作为一组无序关键的:值对,与该键是独特的要求(一个字典内)

使用OrderedDict

from collections import OrderedDict 

no_of_runners = int(input()) 

runners = dict() 
for i in range(no_of_runners): 
    name = input() 
    time = float(input()) 
    runners[name] = time 
sorted_runners = OrderedDict(sorted(runners.items(), key=lambda t: t[1])) 

runners_list = [(i,j) for i,j in sorted_runners.items()] 

print (runners_list[0][0], "wins! His time is", runners_list[0][1], runners_list[1][0], "is in second place. His time is", runners_list[1][1], "and ", runners_list[2][0], "is in third place. his time is ", runners_list[2][1]) 
0

的Python 2.7

runners={} 
for i in range(3): 
    name=raw_input("Please write the name of Runner!") 
    time_elapsed = float(raw_input("Please write the time you spend!")) 
    runners[name]=time_elapsed 
position=[] 
for name, elapsed in sorted(runners.iteritems(), key=lambda elapsed: elapsed[1]): 
    position.append((name, elapsed)) 
print position[0][0], "wins! His time is", position[0][1],'\n', position[1][0], "is second. His time is", position[1][1], "\n", position[2][0], "is third. His time is ", position[2][1] 

Python3

runners={} 
for i in range(3): 
    name=input("Please write the name of Runner!") 
    time_elapsed = float(input("Please write the time you spend!")) 
    runners[name]=time_elapsed 
position=[] 
for name, elapsed in sorted(runners.items(), key=lambda elapsed: elapsed[1]): 
    position.append((name, elapsed)) 
print ('\n',position[0][0], "wins! His time is", position[0][1],'\n', position[1][0], "is second. His time is", position[1][1], "\n", position[2][0], "is third. His time is ", position[2][1])