我想弄清楚怎么做

时间:2018-08-01 05:38:41

标签: python python-3.x

解决问题的代码

import random 

from random import randint 

x = random.randint(1,3)

dis = {'5','6','9','4','7','8'}

f = ['Left' , 'Right' , 'Forward']

问题所在,我希望距离在显示方向后直接走。

每个方向只能出现一次。

for i in range(x):

    print('You can move ' + ''.join(" ".join(random.sample(f, 1) + random.sample(dis, 1 )))+" meters")

概述

因此,从本质上讲,我正在尝试生成字符串,这些字符串根据随机选择告诉用户他们可以向哪个方向移动以及距离多远。但是,当我尝试将方向和距离连接在一起时,该程序对我构成了挑战。基于x生成的数字,程序会将相关的方向和距离放在一起。

例如: 使用此代码会产生以下结果:

print('You can move ' + ''.join(" ".join(random.sample(f, x) + random.sample(dis, x )))+" meters")

您可以向前移动左右9 9 5米

解决问题的代码部分下的代码使用了for循环,该循环采用了x中随机生成的数字并使它循环了多次。最初我以为这是最终的解决方案,但是我尝试运行它,并且方向出现了多次(这比我希望的要多)。确实,我真的很想提供方向的解决方案和距离只有一次,并且格式如下:

您可以向右移动5米

您可以前进9米

您可以向左移动8米

2 个答案:

答案 0 :(得分:0)

如何?

import random


dis = ['5','6','9','4','7','8']
f = ['Left' , 'Right' , 'Forward']

f_count = len(f)
for i in range(0, f_count):
    x = random.randint(0, len(f)-1)
    y = random.randint(0, len(dis)-1)
    dir = f[x]
    print('You can move ' + dir + " "+ dis[y] + " meters")
    f.pop(x)
    dis.pop(y)

答案 1 :(得分:0)

您可以像示例中那样使用random.sample()方法。只需使用zip()方法将来自dis和f的随机采样值绑定在一起:

import random

dis = ['5', '6', '9', '4', '7', '8']
f = ['Left', 'Right', 'Forward']

for direction, d in zip(random.sample(f, len(f)), random.sample(dis, len(f))):
    print('You can move {} {} meters'.format(direction, d))

例如,将打印:

You can move Forward 9 meters
You can move Left 5 meters
You can move Right 8 meters