Python输入数字并从预定义列表中选择中奖号码

时间:2017-05-30 09:32:52

标签: python numbers

我昨天刚刚开始学习Python,这是我第一次接触编程语言而且我注意到我通过做一些事情而不是仅仅通过阅读来学习更好,所以我给自己做了不同的任务并且打了我的脑袋直到我设法完成它们。 关于我的问题,我确信之前有人问过这个问题,但我似乎无法找到它......抱歉。 所以,我想制作一个执行以下操作的小程序: 我有一组预定义的中奖彩票号码。 我希望用户输入6个数字。如果所有六个人都是赢家,用户会收到如下消息:“你赢了!”,如果只有2个数字是正确的,则消息是:“你猜两个数字”,如果3个数字是正确的......等等,你得到了点。

这是我到目前为止所拥有的:

winning_numbers = ("6", "8", "12", "21", "33", "47")
input_numbers = input("Input your lottery numbers ")

for i in winning_numbers: #I've added i in here because I wanted tot try a loop, but i am stuck...
    if input_numbers == winning_numbers:
        print("You guessed all six numbers!")
    elif input_numbers in (winning_numbers[0], winning_numbers[1], winning_numbers[2], winning_numbers[3], winning_numbers[4], winning_numbers[5]): #I am sure that this can be shorter but I don't know how
        print("You guessed one number!")
    elif input_numbers in winning_numbers #I'm stuck here also, where 2 numbers from the input are correct:
        print("You guessed two numbers!")
    else:
        print("You are a looser!")

我知道它可以做得比这简单得多,但我不知道如何。也许如果有人给我一个提示,我将能够理解这背后的概念。提前谢谢。

4 个答案:

答案 0 :(得分:2)

你可能想尝试一个更复杂的"的方法:

winning_numbers = ("6", "8", "12", "21", "33", "47")
input_numbers = input("Input your lottery numbers ").split(",")

correct_guesses = sum(1 for inp_num in input_numbers if inp_num in winning_numbers)

print("You guessed {} numbers".format(correct_guesses))

它是如何运作的?

  1. 您需要在.split上调用input_numbers,因为用户可能会输入以逗号分隔的数字,但它会是一个长字符串(例如"1,2,3")。 split(",")会将此逗号分隔的字符串转换为列表(例如["1", "2", "3"])。

  2. 1 for inp_num in input_numbers if inp_num in winning_numbers会为1中的input_numbers中的每个数字返回一个包含整数winning_numbers的生成器。

  3. sum只会对这些1进行求和。

答案 1 :(得分:1)

winning_numbers = ["6", "8", "12", "21", "33", "47"]
c = 0
for i in xrange(len(winning_numbers)):
    n = raw_input('enter your number')
    if n in winning_numbers:
        c+=1
print 'You guessed %s numbers correctly!'%c

这是python 2.7

%s表示我在字符串中插入外部字符串。 %称为字符串格式,您可以使用百分号将外部变量添加到字符串中。 %s只是意味着我正在插入一个字符串,例如:'hello %s'%'world!'将是字符串'hello world!'

有关字符串格式的更多信息,请查看the documentation

答案 2 :(得分:0)

尝试使用变量计算正确的数字。

winning_numbers = ('6', '8', '12', '21', '33', '47')
input_numbers = input('Input your lottery numbers ')

correct = 0
for i in winning_numbers:
    if i in input_numbers:
        correct += 1

if correct == 6:
    print('You guessed all six numbers!')
elif correct >= 2:
    print('You guessed at least two numbers!')
elif correct == 1:
    print('You guessed one number!')
else:
    print('You are a looser!')

您还可以使用%来简化打印

if correct > 0:
    print('You guessed %d number(s)!' % (correct))
else:
    print('You are a looser!')

%将使用以下括号中的值替换字符串的相应部分。有关详细信息,请参阅this link

或者如果你是一个单行

winning_numbers = ('6', '8', '12', '21', '33', '47')
correct = len([x for x in input('Input your lottery numbers ').split() if x in winning_numbers])
print('You guessed %d number(s)!' % (correct))

[x for x in input('Input your lottery numbers ').split()]将创建一个包含用户输入的列表。以下if x in winning_numbers将确保列表仅包含winning_numbers中的元素。如果删除if部分,则该字符串将包含用户输入中的所有元素。然后我们使用len()来计算列表的长度,即正确猜测的数量。

上述技巧称为“列表理解”。请查看this link以获取更多详细信息。

答案 3 :(得分:0)

我2周前才开始学习Python,所以我也是新手。祝你学习顺利。这是我的解决方案!

correct_numbers = ("1", "2", "3", "4", "5", "6")
input_numbers = input("Input your 6 numbers")
count = 0

for i in correct_numbers:
    if i in input_numbers.split():
    count += 1

if count == 6:
   print("You guessed all numbers")
else:
   print("You guessed {} numbers correctly".format(count))

我最后一段代码中的两个大括号是将变量输入字符串的众多方法之一(我个人最喜欢的方式)。它的工作方式是两个大括号显示变量必须插入的位置,一旦你完成了你在函数中调用的字符串,并将想要输入的变量放在.format之后的一组括号中。 ..确保按顺序放置变量

一个例子:

var1 = two
print("one {}".format(var1))
# the output of this will be "one two"

第二个例子:

var1 = two
var2 = four
print("one {} three {}".format(var1, var2))
# the output of this would be "one two three four"

希望这有助于:)