首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Luhn算法机器人框架

Luhn算法机器人框架
EN

Stack Overflow用户
提问于 2021-01-25 16:41:46
回答 2查看 82关注 0票数 0

我是机器人框架的新手,正在尝试实现Luhn算法。我在python中找到了代码,并希望将其更改为Robot框架。

代码语言:javascript
复制
def cardLuhnChecksumIsValid(card_number):
""" checks to make sure that the card passes a luhn mod-10 checksum """

sum = 0
num_digits = len(card_number)
oddeven = num_digits & 1

for count in range(0, num_digits):
    digit = int(card_number[count])

    if not (( count & 1 ) ^ oddeven ):
        digit = digit * 2
    if digit > 9:
        digit = digit - 9

    sum = sum + digit

return ( (sum % 10) == 0 )

我从robotscript开始,并被困在语句中,如果不是(( count &1)^ oddeven ),有人能帮我把上面的代码转换成机器人脚本吗?有没有自动将python代码转换成机器人的?

代码语言:javascript
复制
cardLuhnChecksumIsValid
[Arguments]    ${ICCID1}
${num_digits}    Get length    ${ICCID1}
${odd_even}    ${num_digits}
...    AND    ${1}
FOR    ${Count}    IN RANGE    0    ${num_digits}
${digit}    Convert To Integer    ${ICCID[${Count}]}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-26 18:58:10

代码语言:javascript
复制
    *** Test Cases ***
Check - ICCID


    [Setup]    setup
    ${ICCID}    Card.get ICCID #get ICCID
    ${Result_Chksum}    cardLuhnChecksumIsValid    ${ICCID}
 
    [Teardown]    tearDown

*** Keywords ***
setup
    No Operation

tearDown
    No Operation

cardLuhnChecksumIsValid
    [Arguments]    ${ICCID_val}
    ${num_digits}    Get length    ${ICCID_val}
    ${oddeven}=    Evaluate    ( ${1} & ${num_digits} )
    FOR    ${Count}    IN RANGE    0    ${num_digits}
        ${digit}    Convert To Integer    ${ICCID_val[${Count}]}
        ${condition}=    Evaluate    not (( ${Count} & 1 ) ^ ${oddeven} )
        ${digit}=    Run Keyword If    ${condition}    Evaluate    (${digit}*2)
        ...    ELSE    Set Variable    ${digit}
        ${digit}=    Run Keyword If    (${digit} > 9)    Evaluate    (${digit} - 9)
        ...    ELSE    Set Variable    ${digit}
        ${Sum}=    Evaluate    (${Sum}+${digit})
    END
    ${result}=    Evaluate    (${Sum}%10)
    [Return]    ${result}
票数 0
EN

Stack Overflow用户

发布于 2021-01-25 17:39:18

看看BuiltIn库中的Evaluate关键字。你可以用它来重写:

代码语言:javascript
复制
if not (( count & 1 ) ^ oddeven ):
    digit = digit * 2

至:

代码语言:javascript
复制
${condition}=    Evaluate    not (( ${count} & 1 ) ^ ${oddeven} )
${digit}=    Run Keyword If    ${condition}    Evaluate    ${digit} * 2

您可以使用相同的方法重写算法的其余部分。在Robot Framework3.2版本中,您还可以使用Inline Python evaluation

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65881409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档