打印由随机数选择的变量

Print a variable selected by a random number

我有一个名字列表,我希望我的程序随机 select 其中一个名字。我尝试使用以下内容:

import random


def main():

    Arkansas = 1
    Manchuria = 2
    Bengal = "3"
    Baja_California = 4
    Tibet = 5
    Indonesia = 6
    Cascade_Range = 7
    Hudson_Bay = 8
    High_Plains = 9
    map = random.randrange(1, 10)
    print(map)

main()

我还尝试使用 randrange()eval() 函数将每个数字设为字符串,但是 none 有效。

不要分配数字或字符串。使用列表。

choices = ['Arkansas', 'Manchuria', 'Bengal', 'Baja California']   # etc.

然后拍一张random.choice

random_choice = random.choice(choices)

另一种选择是使用字典。

my_dict = {1:"Arkansas", 2:"Manchuria", 3:"Bengal",
           4:"Baja California", 5:"Tibet", 6:"Indonesia", 
           7:"Cascade Range", 8:"Hudson Bay", 9:"High Plain"}
map = random.randrange(1, 10)
print(my_dict[map])

使用列表和 random.choice() 可能是更好的选择(更易于阅读,字节数更少),但如果您必须分配数字,这会起作用。

我通过将随机浮点数分配给列表中的字符串项并按字母顺序对列表进行排序来实现此目的。每次你都会得到不同的输出。实际上,我在 Excel 和 OpenOffice Calc 中也是这样做的。简单。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import random

L=['Arkansas', 'Manchuria', 'Bengal', 'Baja California', 'Tibet', 'Indonesia', 'Cascade_Range', 'Hudson Bay', 'High_Plains']

tmp=[]

for item in L:
    item=str(random.random())+'|'+item
    tmp.append(item)

tmp.sort()

for item in tmp:
    print item[item.find('|')+1:]

输出 1

Bengal
Manchuria
Tibet
Indonesia
High_Plains
Arkansas
Baja California
Cascade_Range
Hudson Bay

输出 2

Bengal
Baja California
Manchuria
Tibet
Arkansas
High_Plains
Cascade_Range
Hudson Bay
Indonesia

如果你只想得到一个名字,你可以打破循环:

for item in tmp:
    print item[item.find('|')+1:]
    break

输出 1

Baja California

输出 2

Cascade_Range