2

Pythonクラスに、苦労している割り当てがあります。

プログラム

基本的な前提は次のとおりです。宝くじプログラム。プログラムはランダムに2桁の数字を生成し、ユーザーに2桁の数字の入力を求め、次のルールに従ってユーザーが勝つかどうかを判断します。

  1. ユーザーの入力が正確な順序で宝くじと一致する場合、賞金は$10,000です。
  2. ユーザーの入力のすべての数字が宝くじ番号のすべての数字と一致する場合、賞金は$1,000です。
  3. ユーザーの入力の1桁が宝くじ番号の桁と一致する場合、賞金は$1,000です。

基本フォーマット

基本的に、私はrandintを使用して2桁の数字を生成します(たとえば、58を生成します)。次に、ユーザーは同じ長さの数字を入力します(指定されていませんが、簡単にするために、数字を10〜99としましょう)。

次に、一連のネストされたifを介して、数値が3つの結果と1つの例外と比較されます。

問題:

指定された方法で数値を比較する方法が2つあるため、手がかりがありません。私はすべての基本的な演算子を知っていますが、この場合、それらを使用する方法がわかりません(==を使用できる完全に一致する数値を除いて)。私は(私の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

文字列を使用して比較を行う代わりに、算術を使用して数値の10桁と1桁を個別に取得することをお勧めします。

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

usernum自分の値と値の両方を使用してこれを行うと、lotterynumそれらがどのように一致するかを確認できます。これは宿題のように聞こえるので、詳細はお任せします!

于 2013-03-03T03:42:53.083 に答える
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 に答える
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 に答える