我正在尝试编写代码来查找字符串的长度,并返回"无效的条目"输入整数时。
def length_of_string(mystring):
if type(mystring) == int:
return "invalid entry"
else:
mystring = input("enter the string ")
return len(mystring)
当我尝试执行此功能时,它不会给我一个错误,也不会产生任何解决方案。
答案 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"