[英]Using random.randint help in 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
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個彩票號碼。 有想法嗎?
謝謝大家的幫助。
您似乎對函數中參數的作用感到困惑。 您已經說過,您的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(0,100)
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')
如果您正在尋找一種非常Python化的方法來執行此任務,則可能需要嘗試如下操作:
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 +
嘗試發布您的整個代碼。 在發布時還要注意縮進,那里的函數定義似乎是空的。
我會這樣:
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
讓我們分幾個步驟進行。 您在編寫代碼時應該學習的第一件事是讓單獨的代碼段(函數或對象)完成不同的工作。
首先讓我們創建彩票功能:
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
最終用於檢查解決方案並向用戶證明他是否會獲勝:
def checkGuess(lottery,userGuess):
if lottery == userGuess : print "BINGO!!!!"
else : print "Sorry, you lost"
如您所見,這里的許多功能都使用通用數據來工作。 因此,它建議您在單個類中收集整個代碼,讓我們開始吧:
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"
最后讓我們檢查一下它是如何工作的:
>>> lottery = Lottery(3,100)
>>> lottery.askAndCheck()
take a guess, write 3 numbers separated by space from 1 to 100
3
please enter exactly 3 numbers
1 10 1000
all number must be in range from 1 to 100
1 .123 asd
please ensure your are entering integer decimal numbers separated by space
1 2 3
Sorry, you lost
>>> lottery = Lottery(5,1)
>>> lottery.askAndCheck()
take a guess, write 5 numbers separated by space from 1 to 1
1 1 1 1 1
BINGO!!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.