2

私は Python が初めてで、課題の 1 つに問題があります。

問題は、ユーザーから 2 つの正の整数 (長い方と短い方) を取得する必要があることです。次に、長い整数を (左から右に) ループし、短い整数が長い整数の中にあるかどうかを確認する必要があります。そして、試合の順位と試合数を報告しなければなりません。
*この割り当てを行うために文字列とリストを使用することは許可されていません):

結果の例は次のようになります。

例 1.
正の長い整数を入力: 123456789
正の短い整数を入力: 123
位置 0 で一致が見つかりました
終了: 1 つの一致が見つかりました

例 2.
正の長い整数を入力: 123456789
正の短い整数を入力: 789
6 番目の位置で一致が見つかりました
終了: 1 つの一致が見つかりました

例 3.
正の長い整数を入力: 12312312312231222
正の短い整数を入力: 22
10 番目の位置で
一致が見つかりました 14 番目の位置で
一致が見つかりました 15 番目の位置で一致が見つかりました
終了: 3 つの一致が見つかりました

例 4.
正の長い整数を入力してください: 12312312312231222
正の短い整数を入力してください: 55
終了: 一致するものが見つかりません

だから私がこれまでにやったこと:

# Ask user for positve longer integer number
longInt = int(input("Input a positive longer integer: "))

# Ask user for positive shorter integer number 
shortInt = int(input("Input a positive shorter integer: "))

# Count number of digits in both longer and shorter integer numbers
import math
longLength = int(math.log10(longInt))+1
shortLength = int (math.log10(shortInt))+1

for i in range(0,longLength):
    for x in range(0,shortLength):
        while (longLength > 0):
            longDigit = longInt % 10 **(longLength) // 10**(longLength-1)
            longLength-=1
            print (longDigit)
        while (shortLength > 0):
            shortDigit = shortInt % 10**(shortLength) // 10**(shortLength-1)
            shortLength-=1
            print (shortDigit)

助けてください!ありがとう!(:

4

2 に答える 2

0

これらの行に沿って何かを行うことができます:

def i2l(i):
    rtr=[]
    while i:
        rtr.insert(0, i%10)
        i//=10
    return rtr

longer=int(input("Input a positive longer integer: "))    
shorter=int(input("Input a positive shorter integer: "))

ll=i2l(longer)   
ls=i2l(shorter)

answer=[]
for idx in [i for i,e in enumerate(ll) if e==ls[0]]:    
    try:
        all_good=all(ll[i+idx]==e for i,e in enumerate(ls))    
    except IndexError:
        all_good=False 
    if all_good:
        answer.append(idx)

if answer:
    s='index' if len(answer)==1 else 'indices'
    print '{} found in {} at {} {}'.format(shorter,longer,s,answer)
else:
    print '{} not found in {}'.format(shorter,longer) 

今それを実行します:

Input a positive longer integer: 12312312312231222
Input a positive shorter integer: 22
22 found in 12312312312231222 at indices [10, 14, 15]

Input a positive longer integer: 12312312312231222
Input a positive shorter integer: 4
4 not found in 12312312312231222
于 2013-09-30T15:27:04.203 に答える
0

longInt を数回オフセットして、すべての shortInt の長さの整数を抽出するだけです (ビットシフトのように、2 ではなく 10 のべき乗で)。

import math

# Ask user for positve longer integer number
longInt = 123456789 

# Ask user for positive shorter integer number 
shortInt = 1234

# Count number of digits in both longer and shorter integer numbers

longLength  = int( math.log10(longInt) )+1
shortLength = int( math.log10(shortInt))+1

for offset in range(0, longLength):
  subInt = (longInt// 10**(offset)) % 10 **(shortLength) 
  print(subInt)

結果 :

6789 5678 4567 3456 2345 1234 123 12 1

于 2013-09-30T15:19:12.353 に答える