没有得到任何结果

时间:2018-04-14 19:01:40

标签: python

我正在尝试编写代码来查找字符串的长度,并返回"无效的条目"输入整数时。

def length_of_string(mystring):
    if type(mystring) == int:
        return "invalid entry"
    else:
        mystring = input("enter the string ")
        return len(mystring)

当我尝试执行此功能时,它不会给我一个错误,也不会产生任何解决方案。

4 个答案:

答案 0 :(得分:2)

您应该从else移出def length_of_string(mystring): if type(mystring) is int: return "invalid entry" else: return len(mystring) mystring = input("enter the string ") print(length_of_string(mystring)) 并从主要地点或其他地方调用此功能。

%macro print 2
    mov rax,1
    mov rdi,1
    mov rsi,%1
    mov rdx,%2
    syscall
%endmacro

%macro accept 2
    mov rax,0
    mov rdi,0
    mov rsi,%1
    mov rdx,%2
    syscall
%endmacro

%macro exit 0
    mov rax,60
    mov rdi,0
    syscall
%endmacro

section .data
    a db 12H
    b db 10H
    msg db 10,"Result : ",10
    len equ $-msg
;------------------------
section .bss
    tempbuff resb 16    ;temporary buffer for displaying the ascii

;------------------------

section .text
global _start
_start:
    mov rdx,0
    mov al,byte[a]  ;al is multiplicand
    mov bl,byte[b]  ;bl is multiplier
    mov rcx,8
    lp:
        shr bl,1    
        jnc haha
        add dx,ax
        haha:
            shl ax,1    ;shl al,1 doesn;t work
    loop lp
    mov rbx,0
    mov rbx,rdx
    call hex_ascii      ;converting the hex no into ascii

exit

hex_ascii:
    mov rsi,tempbuff
    mov rcx,16
    mov rax,0
    bah:
        rol rbx,4
        mov al,bl
        and al,0FH
        cmp al,09H
        jbe add30
        add al,07H
        add30:
            add al,30H
        mov [rsi],al
        inc rsi
    loop bah
    print tempbuff,16   
ret

答案 1 :(得分:1)

如果您希望始终从用户请求字符串:

def length_of_string():
    mystring = input("enter the string ")
    try:
        int(mystring)
        return "invalid entry"
    except ValueError:
        return len(mystring)

print(length_of_string())

如果要将该函数与参数一起使用:

def length_of_string(mystring):
    try:
        int(mystring)
        return "invalid entry"
    except ValueError:
        return len(mystring)

print(length_of_string("a string")) # prints 8
print(length_of_string(1))          # prints invalid entry
print(length_of_string(input("enter the string "))) # prints [input length]

答案 2 :(得分:0)

问题是你没有调用该函数。函数(类似于类)在执行之前不会运行。

打电话给他们很容易。你只需要调用函数名称。您还必须将必要的参数传递给函数(此处为mystring)。

length_of_string('Hello World')

要获得返回的内容,您需要将其传递给变量或打印/执行其他操作。

print(length_of_string('Hello World'))

同样if type(mystring) == int:无效input()始终是字符串。要做的是测试它,看它是否可以变成一个整数:

try: 
    int(mystring)
    return "invalid entry"
except ValueError:
    mystring = input("enter the string ")
    return len(mystring)

整个代码:

def length_of_string(mystring):
    try: 
        int(mystring)
        return "invalid entry"
    except ValueError:
        mystring = input("enter the string ")
        return len(mystring)
print(length_of_string('Hello World'))

答案 3 :(得分:0)

如果按参数传递字符串,则再次覆盖它是没有意义的。 我认为解决方案是:

def length_of_string(mystring):
    if (isinstance(mystring, str)):
        print "Length of the string: ", len(mystring)
    else:
        print "Type invalid"