在python中使用random.randint帮助

在python中使用random.randint帮助,python,Python,下面的代码是我模拟彩票的尝试 import random def lottery(numbers): lottoNumbers = [randint('0,100') for count in range(3)] if numbers == lottoNumbers: print('YOU WIN $10,000') else: print('YOU LOSE,DUN DUN DUNNN!') return numbers

下面的代码是我模拟彩票的尝试

import random

def lottery(numbers):
    lottoNumbers = [randint('0,100') for count in range(3)]

    if numbers == lottoNumbers:
        print('YOU WIN $10,000')
    else:
        print('YOU LOSE,DUN DUN DUNNN!')
    return numbers


def main():
    numbers = int(input('Enter a number: '))
    if numbers == lottoNumbers:
        numbers = lottery(numbers)
    else:
        numbers = lottery(numbers)




main()
嘿,伙计们,在你们的帮助下,我走了这么远。我正在尝试编写代码,以便随机选择3个乐透号码。然后用户必须输入他/她自己的3个乐透号码。如果他们全部3个数字都正确,那么他们将赢得全部奖金;如果他们获得3个数字,但顺序不正确,那么他们将赢得部分奖金。显然,如果他们猜错了,那么一份书面声明就会说明这一点。我感到困惑的是,如何编写代码,以便用户可以输入3个数字来尝试匹配随机彩票号码。我还想在用户输入他/她的选择后打印3个彩票号码。有什么想法吗,伙计们


谢谢大家的帮助。

试着发布你的全部代码。在发布时还要注意缩进,在那里,函数的定义看起来是空的

我会这样做:

import random

def lottery():
  win = True
  for i in range(3):
    guess = random.randint(1,100)
    if int(raw_input("Please enter a number...")) != guess:
      win = False
      break

  return win
from random import randint

def doLotto(numbers):
    # make the lotto number list
    lottoNumbers = [randint(0,100) for x in range(len(numbers))]

    # check to see if the numbers were equal to the lotto numbers
    if numbers == lottoNumbers:
        print("You are WinRar!")
    else:
        print("You Lose!")

对于函数中参数的作用,您似乎有点困惑。你说过你的randm函数接受参数“number”,但实际上你没有在任何地方使用它。下一次出现数字时,您已经为其分配了一个全新的值,因此传递给randm的任何值实际上都不会被使用

此外,函数试图返回x,而x尚未在函数中赋值。要么已经定义了一个名为x的全局变量,在这种情况下,函数将只返回该变量,要么函数将因为找不到变量x而失败

这里有一个我已经做过的简单例子,你把它们的三个数字作为一个列表作为一个参数传递给函数

import random

theirNumbers=[5,24,67]

def checkNumbers(theirNumbers):
    lottoNumbers = []
    for count in range(3)
            lottoNumbers.append(random.randint(0,100))
    winning = True
    for number in theirNumbers:
    if not each in lottoNumbers: winning=False
    if winning == True: print("Winner!")

仅举几个例子,您的实现存在一些问题:

如果试图将函数
randm
的输出与x进行比较,则需要在函数中包含一个返回值,如下所示:

def randm():
    return return_value
您似乎正在打印所有值,但没有存储它们,最后您只会得到最后一个值,您应该尝试将它们存储在如下列表中:

list_name = [randint(0,100) for x in range(x)]
这将在列表中生成
randint(0100)
x
次,这将允许您稍后访问所有值

要将您的代码修复为尽可能接近您尝试的代码,我将执行以下操作:

import random

def randm(user_numbers):
    number = []
    for count in range(3):
        number.append(random.randint(0, 100))
    print(number)
    return user_numbers == number

if randm(x):
    print('WINNER')

如果你正在寻找一种非常适合做这项工作的方法, 您可能想尝试以下方法:

import random

def lottery():
  win = True
  for i in range(3):
    guess = random.randint(1,100)
    if int(raw_input("Please enter a number...")) != guess:
      win = False
      break

  return win
from random import randint

def doLotto(numbers):
    # make the lotto number list
    lottoNumbers = [randint(0,100) for x in range(len(numbers))]

    # check to see if the numbers were equal to the lotto numbers
    if numbers == lottoNumbers:
        print("You are WinRar!")
    else:
        print("You Lose!")

我从您的代码(特别是print()代码)中假设您正在使用python 3.x+

让我们通过几个步骤来实现这一点。 在编写代码时,您应该学习的第一件事是让独立的代码段(函数或对象)执行不同的工作

首先,让我们创建用于彩票的函数:

def makeLottery(slotCount, maxNumber):
    return tuple(random.randint(1,maxNumber) for slot in range(slotCount))
接下来,让我们创建一个函数来询问用户的猜测:

def askGuess(slotCount, maxNumber):
    print("take a guess, write {count} numbers separated by space from 1 to {max}".format(count = self.slotCount, max = self.maxNumber))
    while True: #we will ask user until he enter sumething suitable
        userInput = raw_input()
        try:
            numbers = parseGuess(userInput,slotCount,maxNumber)
        except ValueError as err:
            print("please ensure your are entering integer decimal numbers separated by space")
        except GuessError as err:
            if err.wrongCount: print("please enter exactly {count} numbers".format(count = slotCount))
            if err.notInRange: print("all number must be in range from 1 to {max}".format(max = maxNumber))

        return numbers
这里我们使用另一个函数和自定义异常类,让我们创建它们:

def parseGuess(userInput, slotCount,maxNumber):
    numbers = tuple(map(int,userInput.split()))
    if len(numbers) != slotCount : raise GuessError(wrongCount = True)
    for number in numbers:
        if not 1 <= number <= maxNumber : raise GuessError(notInRange = True)
    return numbers

class GuessError(Exception):
    def __init__(self,wrongCount = False, notInRange = False):
        super(GuessError,self).__init__()
        self.wrongCount = wrongCount
        self.notInRange = notInRange
正如您可以看到的,这里的许多函数都使用公共数据来工作。因此,它应该建议您在单个类中收集整个代码,让我们这样做:

class Lottery(object):
    def __init__(self, slotCount, maxNumber):
        self.slotCount = slotCount
        self.maxNumber = maxNumber
        self.lottery = tuple(random.randint(1,maxNumber) for slot in range(slotCount))

    def askGuess(self):
        print("take a guess, write {count} numbers separated by space from 1 to {max}".format(count = self.slotCount, max = self.maxNumber))
        while True: #we will ask user until he enter sumething suitable
            userInput = raw_input()
            try:
                numbers = self.parseGuess(userInput)
            except ValueError as err:
                print("please ensure your are entering integer decimal numbers separated by space")
                continue
            except GuessError as err:
                if err.wrongCount: print("please enter exactly {count} numbers".format(count = self.slotCount))
                if err.notInRange: print("all number must be in range from 1 to {max}".format(max = self.maxNumber))
                continue

            return numbers

    def parseGuess(self,userInput):
        numbers = tuple(map(int,userInput.split()))
        if len(numbers) != self.slotCount : raise GuessError(wrongCount = True)
        for number in numbers:
            if not 1 <= number <= self.maxNumber : raise GuessError(notInRange = True)
        return numbers

    def askAndCheck(self):
        userGuess = self.askGuess()
        if self.lottery == userGuess : print "BINGO!!!!"
        else : print "Sorry, you lost"

请修复
缩进
。那么您在程序中实际使用的名称是
随机
随机
随机
?我只能建议你不要那样。嘿,谢谢你,尼克。我可以问一下为什么吗?如果用户错过了一个猜测,游戏就输了。如果他没有错过任何比赛,他就赢了。您可以随时更改代码,使程序打印一些消息,而不是返回布尔值。在我的类中,您在这段代码中使用的一些函数我还没有学到那么多。。一旦我这样做了,我会在其他作业中参考这个。谢谢