2

我在我的 python 类中有一个我正在努力的作业。

程序

这是基本前提:彩票计划。程序随机生成一个两位数,提示用户输入两位数,根据以下规则判断用户是否中奖:

  1. 如果用户的输入与彩票的顺序完全一致,则奖金为 10,000 美元
  2. 如果用户输入的所有数字都与彩票号码中的所有数字匹配,则奖金为 1,000 美元
  3. 如果用户输入的一位数字与彩票号码中的一位数字匹配,则奖金为 1,000 美元

基本格式

基本上,我使用 randint 生成一个两位数(比如说它生成 58)然后用户输入一个相同长度的数字(虽然没有指定,但为了简单起见,假设数字是 10 到 99)

然后通过一系列嵌套的 if 将数字与 3 个结果和 1 个异常进行比较。

问题:

我不知道如何以指定的方式比较数字。我知道所有基本运算符,但在这种情况下,我看不到使用它们的方法(除了可以使用 == 的完全匹配的数字)。我正在考虑一个数组(来自我的 C/C++ 类),但我不确定如何在这里实现它。这是我到目前为止所做的:

import random
import time

##Declare Variables
usernum=0.0
lottery_num=random.randint(10,99)
##Input
print("Welcome to the Lottery Program!")
usernum=int(input("Please enter a two digit number: "))
print("Calculating Results.")
for i in range(3):
  time.sleep(1)
  print(".")
##Calc & Output
if lottery_num==usernum:
  print("All your numbers match in exact order! Your reward is $10,000!\n")
elif lottery_num==                #WHAT DO HERE?
  print("All your numbers match! Your reward is $3,000!\n")
elif lottery_num==                #WHAT DO HERE?
  print("One of your numbers match the lottery. Your reward is $1,000!\n")
else:
 print("Your numbers don't match! Sorry!")

解决方案

在你们的帮助下,我终于想出了如何做到这一点!非常感谢!这是给那些对我所做的感兴趣的人的完整作业。

import random
import time

##Declare Variables
user_num=0
##lottery_num=random.randint(10,99)
lottery_num=12

##Input
print("Welcome to the Lottery Program!")
user_num=int(input("Please enter a two digit number: "))
print("Calculating Results.")
for i in range(3):
  time.sleep(1)
  print(".")

##Calc & Output
lottery_tens = lottery_num // 10
lottery_ones = lottery_num % 10

user_tens = user_num // 10
user_ones = user_num % 10

if lottery_num == user_num:
    print("All your numbers match in exact order! Your reward is $10,000!\n")
elif lottery_tens == user_ones and lottery_ones == user_tens:
    print("All your numbers match! Your reward is $3,000!\n")
elif lottery_tens == user_tens or lottery_ones == user_ones \
  or lottery_ones == user_tens or lottery_tens == user_ones:
    print("One of your numbers match the lottery. Your reward is $1,000!\n")
else:
    print("Your numbers don't match! Sorry!")

##Same as Calc & Output using Sets.
##lottery_set = set('%02d' % lottery_num)
##user_set = set('%02d' % user_num)
##if lottery_num == user_num:
##    print("All your numbers match in exact order! Your reward is $10,000!\n")
##elif lottery_set == user_set:
##    print("All your numbers match! Your reward is $3,000!\n")
##elif lottery_set.intersection(user_set):
##    print("One of your numbers match the lottery. Your reward is $1,000!\n")
##else:
##    print("Your numbers don't match! Sorry!")
4

6 回答 6

4

你可以使用集合。

lottery_set = set('%02d' % lottery_num)
user_set = set('%02d' % user_num)
if lottery_num == user_num:
    print('10000')
elif lottery_set == user_set:
    print('3000')
elif lottery_set.intersection(user_set):
    print('1000')
else:
    print('0')
于 2013-03-04T04:28:47.953 回答
4

作为使用字符串进行比较的替代方法,我建议使用算术分别获取数字的十位和个位:

tens = num // 10 # the // operator does integer division
ones = num % 10  # the % operator finds the modulus

如果你同时使用你的值usernumlotterynum值,那么你可以找出它们是如何匹配的。由于这听起来像是一项家庭作业,我将把细节留给你!

于 2013-03-03T03:42:53.083 回答
3

就一个想法而言,我会说将您的号码转换为字符串,然后使用该字符串中的字符来确定获胜组合(例如:相同的字符相同的位置,相同的字符不同的位置等)

于 2013-03-03T03:17:50.553 回答
2

那么这里有一些可以帮助你的东西,你可以这样做:

if(str(lottery_num)[0] == str(usernum)[0]):
    print "True"

内置str函数会将您的整数转换为字符串。在上面的示例中,它将让您将字符串的第一个元素与用户字符串的第一个元素进行比较。使用这种访​​问方式,您可以通过这种方式解决您的问题。在这种0情况下, 表示第一个元素,类似于 char 数组。

于 2013-03-03T03:24:13.087 回答
1

您需要隔离数字,以便它们可以相互独立地进行比较。

一种简单的方法是将数字转换为字符串,然后比较单个字符。

于 2013-03-03T03:23:24.247 回答
0

这是完整的作业:)

import random
import time

##Declare Variables
user_num=0
##lottery_num=random.randint(10,99)
lottery_num=12

##Input
print("Welcome to the Lottery Program!")
user_num=int(input("Please enter a two digit number: "))
print("Calculating Results.")
for i in range(3):
  time.sleep(1)
  print(".")

##Calc & Output
lottery_tens = lottery_num // 10
lottery_ones = lottery_num % 10

user_tens = user_num // 10
user_ones = user_num % 10

if lottery_num == user_num:
    print("All your numbers match in exact order! Your reward is $10,000!\n")
elif lottery_tens == user_ones and lottery_ones == user_tens:
    print("All your numbers match! Your reward is $3,000!\n")
elif lottery_tens == user_tens or lottery_ones == user_ones \
  or lottery_ones == user_tens or lottery_tens == user_ones:
    print("One of your numbers match the lottery. Your reward is $1,000!\n")
else:
    print("Your numbers don't match! Sorry!")

##Same as Calc & Output using Sets.
##lottery_set = set('%02d' % lottery_num)
##user_set = set('%02d' % user_num)
##if lottery_num == user_num:
##    print("All your numbers match in exact order! Your reward is $10,000!\n")
##elif lottery_set == user_set:
##    print("All your numbers match! Your reward is $3,000!\n")
##elif lottery_set.intersection(user_set):
##    print("One of your numbers match the lottery. Your reward is $1,000!\n")
##else:
##    print("Your numbers don't match! Sorry!")
于 2013-03-06T03:21:07.620 回答