我有一个名单,我希望我的程序可以随机选择其中一个名字。我尝试使用以下内容:
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()
我还尝试使用eval()
randrange()
函数将每个数字作为字符串,但这些都不起作用。
答案 0 :(得分:14)
不要指定数字或字符串。使用清单。
choices = ['Arkansas', 'Manchuria', 'Bengal', 'Baja California'] # etc.
然后选择random.choice
random_choice = random.choice(choices)
答案 1 :(得分:3)
另一种选择是使用字典。
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()
可能是更好的选择(更容易阅读,更少的字节),但如果你必须分配数字,这将有效。
答案 2 :(得分:0)
我这样做是通过为列表中的字符串项分配随机浮点数并按字母顺序对列表进行排序。每次你会得到不同的输出。我实际上在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