我有這個任務,我要求用戶輸入11位數字代碼(字符串)。帕斯卡爾字符串的使用(正確的Python例子)
1) 例如,假設用戶輸入代碼是37605030299。
2) 然後我需要檢查最後一個數字是否匹配。這就是你如何得到最後一個數字: nr11 =(nr1 * 1 + nr2 * 2 + nr3 * 3 + nr4 * 4 + nr5 * 5 + nr6 * 6 + nr7 * 7 + nr8 * 8 + nr9 * 9 + nr10 * 1)國防部11
3) 這是我寫的:
var C, nr1, nr2, nr3, nr4, nr5, nr6, nr7, nr8, nr9, nr10, nr11: string;
begin
nr1:=(copy(C, 1, 1));
nr2:=(copy(C, 2, 1));
nr3:=(copy(C, 3, 1));
nr4:=(copy(C, 4, 1));
nr5:=(copy(C, 5, 1));
nr6:=(copy(C, 6, 1));
nr7:=(copy(C, 7, 1));
nr8:=(copy(C, 8, 1));
nr9:=(copy(C, 9, 1));
nr10:=(copy(C, 10, 1));
nr11:=(copy(C, 11, 1));
writeln('Enter the code which contains 11 digits:');
readln(C);
if nr11 = (nr1*1 + nr2*2 + nr3*3 + nr4*4 + nr5*5 + nr6*6 + nr7*7 + nr8*8 + nr9*9 + nr10*1) mod 11 then
begin
writeln('The code is correct!');
end
else
if nr11 <> (nr1*1 + nr2*2 + nr3*3 + nr4*4 + nr5*5 + nr6*6 + nr7*7 + nr8*8 + nr9*9 + nr10*1) mod 11
begin
writeln('The code is incorrect!');
end;
readln();
end.
這不工作,因爲我知道,像我這樣做你無法使用字符串中的方程,但它會工作?我只是在學習帕斯卡,對不起,如果這看起來太愚蠢。
此UI代碼應該是正確的。檢查:
1 * 3 + 2 * 7 + 3 * 6 + 4 * 0 + 5 * 5 + 6 * 0 + 7 * 3 + 8 * 0 + 9 * 2 + 1 * 9 = 108
108/11〜9,8
9 * 11 = 99
108-99 = 9(答案是9,所以最後一個數字必須是如圖9所示,最後的數字是9,其示出了代碼是正確的)
如果你不明白我想做什麼,那麼我在python中找到了一個應該是正確的例子:
def checkIDCode(code):
if len(code) != 11 or not code.isdigit():
return False
c = map(int,code)
w1 = [1,2,3,4,5,6,7,8,9,1]
w2 = [3,4,5,6,7,8,9,1,2,3]
s1 = sum(map(lambda x,y: x*y, c[:-1], w1))%11
s2 = (sum(map(lambda x,y: x*y, c[:-1], w2))%11)%10
return s1 == c[-1] or s1 == 10 and s2 == c[-1]
見http://stackoverflow.com/questions/15581551/how-to-use-pascal-string-in-equation一些線索 – 2013-03-23 20:42:26