我是Python新手,我的任务之一遇到了麻烦。
所以问题是:
我必须从用户那里获得两个正整数(一个更长,一个更短)。然后我必须遍历较长的整数(从左到右)并检查较长的整数内是否出现较短的整数。我必须报告比赛的位置和比赛的数量。
*我不允许使用字符串和列表来执行此分配):
结果的例子应该是这样的:
例如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)
请帮忙!谢谢! (:
答案 0 :(得分:0)
你只需要多次偏移你的longInt就可以提取所有的shortInt-length整数(比如位移,但功率为几十'而不是二十')。
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
答案 1 :(得分: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