Python3掩码字符串



我正在尝试解决python3中的练习,我不能让它工作。

我有这样的代码:

def mask_string(string3):
"""Mask string"""
s = string3[-4:].rjust(len(string3), "#")
masking_string = ""
string3_length = len(s)
result = multiply_str(masking_string, string3_length) + s
return result
def multiply_str(string3, masking_string):
"""Mulitply string"""
new_multiply_str = string3 * int(masking_string)
return new_multiply_str

我像这样运行它:

elif choice == "10":
string3 = input("Enter a string that will replace all of the caracters with # exept the 4 last ones: ") 
print(marvin.mask_string(string3)) 
masking_string = input("Enter number: ") 
print(marvin.multiply_str(string3, masking_string)) 

当我运行它时,我得到了这个错误:

line 131, in multiply_str new_multiply_str = string3 * int(masking_string) 
ValueError: invalid literal for int() with base 10: '' 

我真的很感激一些帮助,并且在解释的时候请把它简化很多,因为我是python的新手,仍然不明白如何做很多事情。

line 131, in multiply_str new_multiply_str = string3 * int(masking_string) 
ValueError: invalid literal for int() with base 10: '' 

所以你的masking_string是"这不是一个有效的数字(整数或非整数)。你一定是按了回车键而没有输入数字。

如果你想防止这种情况,把你的输入例程包装在一个循环中,只有当你有一个数字时才返回:

def get_int():
while True:
x = input("Number: ")
try:
return int(x)
except ValueError:
print(f"Invalid input {x}, try again...")