Python 如何防止用户输入两个相同的数字
所以,我在业余时间正在编写彩票代码,我遇到了一个小问题 我想防止用户在他们的彩票抽奖号码中输入两个相同的号码,也就是说,我不希望用户选择号码1两次 其他一切都很好 这是我的全部代码:Python 如何防止用户输入两个相同的数字,python,Python,所以,我在业余时间正在编写彩票代码,我遇到了一个小问题 我想防止用户在他们的彩票抽奖号码中输入两个相同的号码,也就是说,我不希望用户选择号码1两次 其他一切都很好 这是我的全部代码: import random lotteryNumbers = [] print("Welcome to your new Lotto service") lotterydrawfile = open("lotterydrawfile.txt","w") for i in range (6): nu
import random
lotteryNumbers = []
print("Welcome to your new Lotto service")
lotterydrawfile = open("lotterydrawfile.txt","w")
for i in range (6):
number = random.randint(1,60)
lotterydrawfile.write(str(number) + " ")
lotterydrawfile.close()
userentryfile = open("userentryfile.txt","w")
for i in range (6):
number = input("Enter a number between 0 and 60. Numbers must not be in word format")
for i in range (1000):
if number < "0" or number > "60":
print("Your number needs to be between 0 and 60")
number = input("Enter a number between 0 and 60")
print(str(number))
userentryfile.write(str(number) + " ")
userentryfile.close()
userlottonumbers = open("userentryfile.txt").read()
usernumber = []
number_string = ""
for i in userlottonumbers:
number_string = number_string + str(i)
if str(i) == " ":
usernumber.append(number_string)
number_string = ""
print("Your numbers are " + str(usernumber))
lotterydraw = open("lotterydrawfile.txt").read()
number_string1 = ""
lottodraw = []
for j in lotterydraw:
number_string1 = number_string1 + str(j)
if str(j) == " ":
lottodraw.append(number_string1)
number_string1 = ""
print("The lotto draw was " + str(lottodraw))
same = 0
for i in usernumber:
for j in lottodraw:
if i == j:
same =same + 1
prize = same * 100
if same == 6:
prize = 10000000
print("You won £" + str(prize))
随机导入
乐透号码=[]
打印(“欢迎使用新的乐透服务”)
lotterydrawfile=open(“lotterydrawfile.txt”、“w”)
对于范围(6)中的i:
number=random.randint(1,60)
lotterydrawfile.write(str(number)+“”)
lotterydrawfile.close()
userentryfile=open(“userentryfile.txt”、“w”)
对于范围(6)中的i:
数字=输入(“输入一个介于0和60之间的数字。数字不能为word格式”)
对于范围(1000)内的i:
如果数字<“0”或数字>“60”:
打印(“您的号码需要介于0和60之间”)
数字=输入(“输入一个介于0和60之间的数字”)
打印(str(编号))
userentryfile.write(str(number)+“”)
userentryfile.close()
userlottonumbers=open(“userentryfile.txt”).read()
usernumber=[]
number_string=“”
对于UserLottonMembers中的i:
数字字符串=数字字符串+str(i)
如果str(i)==“”:
usernumber.append(数字\字符串)
number_string=“”
打印(“您的号码是”+str(用户号码))
lotterydraw=open(“lotterydrawfile.txt”).read()
数字_string1=“”
lottodraw=[]
对于彩票抽奖中的j:
数字字符串1=数字字符串1+str(j)
如果str(j)==“”:
lottodraw.append(编号\u string1)
数字_string1=“”
打印(“乐透抽签是”+str(乐透抽签))
相同=0
对于usernumber中的i:
对于lottodraw中的j:
如果i==j:
相同=相同+1
奖品=相同*100
如果相同==6:
奖金=10000000
打印(“您赢得了奖金”+str(奖金))
我想做的改进是从这一行开始的:
userentryfile = open("userentryfile.txt","w")
for i in range (6):
number = input("Enter a number between 0 and 60. Numbers must not be in word format")
for i in range (1000):
if number < "0" or number > "60":
print("Your number needs to be between 0 and 60")
number = input("Enter a number between 0 and 60")
userentryfile=open(“userentryfile.txt”、“w”)
对于范围(6)中的i:
数字=输入(“输入一个介于0和60之间的数字。数字不能为word格式”)
对于范围(1000)内的i:
如果数字<“0”或数字>“60”:
打印(“您的号码需要介于0和60之间”)
数字=输入(“输入一个介于0和60之间的数字”)
但在下面,我希望用户停止输入两个相同的数字
提前感谢。将用户输入的数字保留在列表中,并测试以查看最近的输入是否已在该列表中:
numbers = []
if number not in numbers:
numbers.append(number)
else:
# "each number must be unique..."
将用户输入的数字保留在列表中,并测试以查看最近的输入是否已在该列表中:
numbers = []
if number not in numbers:
numbers.append(number)
else:
# "each number must be unique..."
python中有一种称为集合的数据类型。所有放入集合中的内容都必须是唯一的。在一个集合中,一次只能有一个。下面的代码还应该捕获大多数(如果不是所有的话)可能会在将来给您带来问题的边缘情况。它确保用户输入的数据确实是一个数字,介于0和60之间,以前从未被选取过,并且将从用户那里获得6个数字
def get_user_numbers(number_of_guesses):
# a set can only have one element with the any given value
users_numbers = set()
# used to keep the while loop going until you have all the information you want.
got_all_numbers = False
while not got_all_numbers:
# tries to get input from the user. The except statement will be hit if the
# user gives you something other than a whole number.
try:
current_number = int(raw_input("Enter a number between 0 and 60"))
except ValueError:
print 'Please enter a number'
# Checks to make sure the number is in the range you want it to be.
if current_number < 0 or current_number > 60:
print 'Please pick a number between 0 and 60.'
# Checks to see if the number has already been used.
elif current_number in users_numbers:
print 'Please pick a number that you have not already used'
# if everything else if correct it will add the users number to the set.
else:
users_numbers.add(current_number)
# Checks to make sure the set still has less than 6 numbers in it. If it
# does then the while loop will keep going until there are 6 guesses
if len(users_numbers) == number_of_guesses:
got_all_numbers = True
elif len(users_numbers) > number_of_guesses:
# There is a big problem... The user managed to give you more guesses
# than you are asking for! The program should exit or you should start
# over with blank guesses
raise ValueError
# If you wanted to you could print out all of the users guesses here so they
# can see what they have already tried
return users_numbers
print get_user_numbers(6)
def获取用户编号(猜测次数):
#一个集合只能有一个具有任意给定值的元素
用户数量=集合()
#用于保持while循环运行,直到您获得所需的所有信息。
获取所有数字=错误
虽然没有得到所有的号码:
#尝试从用户处获取输入。如果
#用户给你的不是一个整数。
尝试:
当前数字=整数(原始输入(“输入一个介于0和60之间的数字”))
除值错误外:
打印“请输入一个数字”
#检查以确保号码在您希望的范围内。
如果当前_编号<0或当前_编号>60:
打印“请选择一个介于0和60之间的数字。”
#检查号码是否已被使用。
elif用户号中的当前用户号:
打印“请选择尚未使用的号码”
#如果其他一切都正确,则会将用户编号添加到集合中。
其他:
用户编号。添加(当前编号)
#检查以确保集合中的数字仍然少于6个。如果是
#那么while循环是否会一直运行,直到出现6次猜测
如果len(用户数)=猜测数:
得到所有数字=真
elif len(用户数量)>猜测数量:
#有一个大问题。。。用户设法给你更多的猜测
#比你要求的还要多!程序应该退出,或者您应该启动
#一片空白
升值误差
#如果您愿意,您可以在这里打印出所有用户的猜测,以便
#可以看到他们已经尝试了什么
返回用户号码
打印获取用户号码(6)
要在程序中使用此函数,只需将函数调用放在文件顶部,然后在已编写的代码中使用函数调用。下面是代码的示例:
# -*- coding: UTF-8 -*-
import random
def get_user_numbers(number_of_guesses):
users_numbers = list()
got_all_numbers = False
while not got_all_numbers:
try:
current_number = int(raw_input("Enter a number between 0 and 60: "))
except ValueError:
print 'Please enter a number'
else:
if current_number < 0 or current_number > 60:
print 'Please pick a number between 0 and 60.'
elif current_number in users_numbers:
print 'Please pick a number that you have not already used'
else:
users_numbers.append(current_number)
if len(users_numbers) == number_of_guesses:
got_all_numbers = True
elif len(users_numbers) > number_of_guesses:
raise ValueError
user_numbers_string = ' '.join(str(guess) for guess in users_numbers)
return user_numbers_string
lotteryNumbers = []
print("Welcome to your new Lotto service")
lotterydrawfile = open("lotterydrawfile.txt", "w")
for i in range(6):
number = random.randint(1, 60)
lotterydrawfile.write(str(number) + " ")
lotterydrawfile.close()
# Here is where you call the function that is at the top of the file
userlottonumbers = get_user_numbers(6)
usernumber = []
number_string = ""
for i in userlottonumbers:
number_string = number_string + str(i)
if str(i) == " ":
usernumber.append(number_string)
number_string = ""
print("Your numbers are " + str(usernumber))
lotterydraw = open("lotterydrawfile.txt").read()
number_string1 = ""
lottodraw = []
for j in lotterydraw:
number_string1 = number_string1 + str(j)
if str(j) == " ":
lottodraw.append(number_string1)
number_string1 = ""
print("The lotto draw was " + str(lottodraw))
same = 0
for i in usernumber:
for j in lottodraw:
if i == j:
same = same + 1
prize = same * 100
if same == 6:
prize = 10000000
print("You won £" + str(prize))
#-*-编码:UTF-8-*-
随机输入
def获取用户编号(猜测次数):
用户数量=列表()
获取所有数字=错误
虽然没有得到所有的号码:
尝试:
当前\u编号=整数(原始\u输入(“输入一个介于0和60之间的数字:”)
除值错误外:
打印“请输入一个数字”
其他:
如果当前_编号<0或当前_编号>60:
打印“请选择一个介于0和60之间的数字。”
elif用户号中的当前用户号:
打印“请选择尚未使用的号码”
其他:
用户编号。追加(当前编号)
如果len(用户数)=猜测数:
得到所有数字=真
elif len(用户数量)>猜测数量:
升值误差
用户\u数字\u字符串=“”。连接(str(guess)表示guess i