我的程序在我的桌面上运行,但在我的笔记本电脑上运行,即使它安装了相同版本的Python。
有人可以告诉我我做错了吗?
import random
count = 0
food_list = [
"Pizza",
"Italian",
"Hamburger",
"Sandwiches",
"Salads",
"Chinese",
"Seafood",
"Mexican",
"French",
"Deli",
"Indian"
]
food_choices = []
# Header and description text
print " "
print "*" * 30
print "*" * 30
print " "
print "Food Options 1000"
print " "
print "Tell the Food Options 1000 how many options you want to select from"
print "and it will provide you with that amount of appropriate food choices."
print " "
print "*" * 30
print "*" * 30
print " "
# --- End header and description text ---
print "You have a total of %d choices from which to choose." % len(food_list)
print " "
# Receive user input and assign to a variable
optNum = int(raw_input("How many options do you want to have? "))
# Show how many choices user selected
print " "
print "Your %d choices are: " % optNum
print " "
# Run while loop until user selection integer is met
# Print food choices in the amount of user chosen number
while count != optNum:
fc = random.choice(food_list)
if fc not in food_choices:
food_choices.append(fc)
count += 1
for i in food_choices:
print i
print " "
print " "
我的桌面结果:
您想要多少个选项? 8
您的8个选择是:
Salads Deli墨西哥中式披萨汉堡法式三明治
笔记本电脑的结果:
您想要多少个选项? 8
您的8个选择是:
Salads Deli墨西哥中国比萨墨西哥法国法国
更新:
我按照f.rodrigues的建议,通过USB记忆棒将文件移到笔记本电脑上。棒上的文件正常工作,不显示重复。复制粘贴代码中有47个缺失的行。
谢谢大家。
答案 0 :(得分:1)
我发现很难相信你正在使用相同的代码。
你说你把它复制粘贴到另一台机器上。
如果是这种情况在这个过程中可能出现问题,那么您的IDE可能会弄乱缩进。 (可能是由于错过使用制表符和空格作为缩进)
这样的事情可能会发生:
while count != optNum:
fc = random.choice(food_list)
if fc not in food_choices:
food_choices.append(fc)
count += 1
与此完全不同:
while count != optNum:
fc = random.choice(food_list)
if fc not in food_choices:
food_choices.append(fc)
count += 1
缺少简单的缩进可能会产生不同的结果。在这种情况下,它会向food_choice
添加更少的项目。
编辑:
msw表示在OP问题中,两个列表都有8个项目,只有第二个列表有重复项。
为此,我认为差异来自于此:
while count != optNum:
fc = random.choice(food_list)
food_choices.append(fc)
count += 1
检查唯一性的行不存在。
这将获得列表中相同数量的项目,但它可能有重复项。
这有点远离我开始的复制粘贴问题。
我认为可以完全确定的唯一方法是使用相同的文件,而不是复制它。使用USB棒,或在线上传/下载。
答案 1 :(得分:0)
出现第一个问题是因为您使用的是随机数字生成器。伪随机算法以种子值开始。如果你没有明确地播种它,它将使用一天中的时间(或其他任意数字)播种。因此,每次运行程序时,random
生成的数字都会有所不同。这允许您将随机生成器设置为相同的起始种子,因此所有运行将给出相同的结果。如果您在程序开头使用random.seed('myseed')
甚至random.seed(4)
,那么每次运行都是相同的。
您的代码的第二个问题是您使用random.choice()
来选择您的选择;你将以这种方式获得重复,例如"法语法语"在您的示例输出中。最好使用random.sample(food_list, optNum)
,其中sample被描述为
返回从总体序列中选择的k长度的唯一元素列表。用于无需替换的随机抽样。
返回包含来自总体的元素的新列表,同时保持原始总体不变。 ...