您好我很难在我的计划中加入超过1个班次。目标是为每个角色分配一个班次金额,如:
statement = input("Enter string: ")
shift = input("Enter shift amounts: ")
例如,如果
statement = "Hello"
shift = 5 6 7
如何将该5号分配给H,6分配给E,7分配给l,然后再分配5分至1分,7分配给o
我认为我需要把它变成一个列表,所以这就是我到目前为止所做的:
for char in statement:
char[0] = shift[0]
答案 0 :(得分:0)
试试这个:
#!/usr/bin/python
statement = raw_input("Enter string: ")
shift = raw_input("Enter shift amounts: ").split()
for index, char in enumerate(statement):
if index < len(shift):
print chr(ord(char) + int(shift[index])),
else:
print char,
为Python 2编写,不对用户输入进行错误检查,但应该有效。
编辑:还有一个Python3版本,因为它看起来就像你正在使用的那样:
#!/usr/bin/python
statement = input("Enter string: ")
shift = input("Enter shift amounts: ").split()
for index, char in enumerate(statement):
if index < len(shift):
print(chr(ord(char) + int(shift[index])), end='')
else:
print(char, end='')
print()
在两个版本中,如果用户为shift提供的整数数小于字符串的大小,则假定移位值为0。 如果你想,你可以做一个测试,看看用户提供的移位整数的数量是否小于字符串的长度,并输出错误,或者再次询问用户输入。
编辑2:根据评论中的要求,此代码使移位重新启动而不是假设它为0:
#!/usr/bin/python
statement = input("Enter string: ")
shift = input("Enter shift amounts: ").split()
for index, char in enumerate(statement):
index = index % len(shift)
print(chr(ord(char) + int(shift[index])), end='')
print()
编辑3:根据评论中的要求,此代码确保用户输入仅为a-z或A-Z,并且在函数中。
#!/usr/bin/python
import sys
from string import ascii_letters as alphabet
def enc_string(statement, shift):
# Make sure user entered valid shift values
try:
shift = [ int(val) for val in shift.split() ]
except ValueError:
print("Error: All shift values must be integers")
sys.exit(1)
# Make sure all chars in statement are valid
for char in statement:
if char not in alphabet:
print("Error: all characters in string must be a-z or A-Z")
sys.exit(1)
# Start putting together result
res = "Result: "
# Convert statement
for index, char in enumerate(statement):
shift_to_use = shift[index % len(shift)]
index_of_char = alphabet.index(char)
index_of_new_char = (index_of_char + shift_to_use) % len(alphabet)
res += alphabet[index_of_new_char]
return res
statement = input("Enter string: ")
shift = input("Enter shift amounts: ")
print(enc_string(statement, shift))