python写密码函数_def函数中的加密代码以python编写

need some help in the following code as it goes into infinite loop and does not validate user input: the get_offset is the function. Just edited need some help with the encryption part to be done in a function defined

def get_offset(offset):

while True:

value = (offset)

if value < 1:

print("")

if value > 94:

print("")

return offset

my_details = display_details()

get_choice = get_menu_choice()

print(my_details)

print(get_choice)

count = 10

while count > 0:

count -=1

encrypted = ""

choice = int(input("What would you like to do [1,2,3,4,5]: "))

while choice <1 and choice > 5:

print("Invalid choice, please enter either 1, 2, 3, 4 or 5.")

if choice == 1:

string_input = input("Please enter string to encrypt: ")

input_offset = get_offset(int(input("Please enter offset value (1 to 94): ")))

**for letter in string_input:

x = ord(letter)

encrypted += chr(x + input_offset)

if x < 32:

x += 94

if x > 126:

x -= 94

print(encrypted)**

解决方案

you have to assign choice new value inside inner while loop. this way, new input is considered before iterating again and again.

this should do the trick:

while choice < 1 and choice > 5:

choice = int(input("Invalid choice, please enter either 1, 2, 3, 4 or 5."))

A random advice: If you want to keep dataset strictly equal to [1,2,3,4,5], you should avoid choice<1 and choice>5. This makes your program vulnerable to invalid inputs such as 3.5.

Instead, you should do this:

valid_inputs = [1, 2, 3, 4, 5]

choice = int(input("Pick a number from [1, 2, 3, 4, 5]:"))

while choice not in valid_inputs:

choice = int(input("Invalid choice, please enter either 1, 2, 3, 4 or 5."))

What I understood from your comments is that, in get_offset(), you want user to type a value between 1 and 94. If user enters something out of that range, you want to ask question again and again. The code below should do what you want:

def get_offset():

# first, ask for a value.

offset = int(input("Enter a value between 1 and 94:"))

while offset < 1 and offset > 94:

# if the value is invalid, trap user inside this while loop.

# user will be stuck here (while loop will return true)

# until a valid input is received.

offset = int(input("Invalid input. Please enter a value between 1 and 94:"))

# if we proceed down here, it means we are over while loop

# and it implies that user has given us valid input. return value.

return offset

Secondly, inside main while loop, you can call get_offset() like this:

if choice == 1:

string_input = input("Please enter string to encrypt: ")

input_offset = get_offset()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值