@
다음으로 우리는 주제 당신이 나에게, 제발 개인 편지 어떤 더 나은 솔루션이있는 경우 나, 솔루션 파이썬 과정을 배우고 몇 가지를 소개합니다. 여기에 단지 제목과 코드를 표시합니다.
1. 해피 디지털
설명 : 숫자인지 확인하는 알고리즘을 쓰기 "행복입니다." 어떤 수의 각 및 치환체의 수와, 양수부터 1과 동일한 1과 동일한 최종 디지털 컨버전스 또는까지 과정을 반복되었거나 뜻 사이클 끝없이 : 행복도는 다음과 같이 결정된다 궁극적으로 1과 동일 수렴하지 않습니다. 도 1은 최종 수렴 수가 행복 개수와 동일 할 수있다. 들어 예 :
19는 행복 번호입니다 다음과 같이 계산된다 :
(1) ^ 2 + 9 = 82 ^ 2
(8) ^ 2 + 2 ^ 2 = 68
(6) ^ 2 + 8 ^ 2 = 100
(1) ^ 2 + 2 + 0 ^ 0 ^ 2 = 1
때 디지털 행복 입력, 출력 참, 그렇지 않으면 출력 거짓.
저자 코드 : 재귀가 될 수 있습니다.
a = input('')
def num(a):
sum = 0
for i in list(a):
sum += int(i)**2
try:
if sum != 1:
num(str(sum))
else:
print('True')
except:
print('False')
result = num(a)
2. 시저 암호 I
설명 : 카이사르 암호 즉, 로마의 줄리어스 시저가 문자 알파벳 순서 뒤에 세 번째 문자와 각 영어 문자 사이클 정보를 다른 방법을 사용하여 군사 정보의 암호화 알고리즘으로 사용되는 알파벳 사이의 대응은 다음과 같습니다 :
原文: ABCDEFGHIJKLMNOPQRSTU VWXYZ
密文: DEFGHIJKLMNOPQRSTUVWX YZABC
일본어 문자 P 다음 조건을 만족하는 문자 암호문 C : C = (P + 3) 모드 (26)
상기 인 시저 암호 암호화 방법, 복호화 방법 및 그 반대, 즉 : P = (C-3) 모드 (26)
사용자가 입력 만 ~ z의 소문자와 스페이스를 포함 사용할 공간이 암호화되지 않은 프로그램, 입력 문자열 시저 암호 암호화 직접 출력을 기록 할 수 있다고 가정한다. 입력을 얻기 위해 입력 ()를 사용.
저자 코드 : 서로 다른 기준에 따라 판단.
my_str = input("")
result = ""
for i in my_str:
if i != my_str[-1] and i not in ['x','y','z']:
result += chr(int(ord(i)) + 3 % 26)
elif i == my_str[-1]:
result += chr(int(ord(i)) + 3 % 26)
elif i in ['x','y','z']:
result += chr(int(ord(i)) - 23)
print(result.replace('#',' '))
3. 시저 암호 II
설명 : 카이사르 암호 시저 문자 순서 후 세 번째 알파벳 문자 영어 문자 정보의 각주기 위해 다른 방법을 사용하여 암호화 및 복호화 알고리즘의 로마 군사 정보, 다음과 같이 즉, 대응 관계 알파벳입니다 :
原文 : ABCDEFGHIJKLMNOPQRSTU VWXYZ
密 文 : DEFGHIJKLMNOPQRSTUVWX YZABC
일본어 문자 P 다음 조건을 만족하는 문자 암호문 C : C = (P + 3) 모드 (26)
상기 인 시저 암호 암호화 방법, 복호화 방법 및 그 반대, 즉 : P = (C-3) 모드 (26)
입력을 사용할 수 있습니다 사용자가 ~ ZA ~ Z, 특수 문자 만 문자, 즉, 영어 소문자가 포함되어 있다고 가정 특수 문자가 암호화되지 않습니다 것을 특징으로하는 프로그램, 입력 문자열 카이사르 암호 암호화, 직접 출력을 쓰기 처리.
저자 코드 : 심판이 ASCII 범위 내에서 할 수 있는지 여부에 따라 달라집니다.
my_str = input("")
result = ""
for i in my_str:
if i != my_str[-1] and i not in ['x','y','z','X','Y','Z'] and (65 <= int(ord(i)) <= 90 or 97 <= int(ord(i)) <= 122):
result += chr(int(ord(i)) + 3 % 26)
elif i == my_str[-1] and (65 <= int(ord(i)) <= 90 or 97 <= int(ord(i)) <= 122):
result += chr(int(ord(i)) + 3 % 26)
elif i in ['x','y','z','X','Y','Z']:
result += chr(int(ord(i)) - 23)
else:
result += i
print(result.replace('#',' '))
4. 브래킷 검출기 쌍
설명 : 사용자는 성공 출력 페어링 괄호 올바르게 짝하는지, 괄호 ()를 포함 할 수있다 그 문자열을 입력한다 :
페어링이 성공, 실패 페어링
페어링 괄호), 즉, (가) 쌍을 나타내고, 서열 일치 고려하는 상기 (괄호만을 고려 페어링, 짝 없음.
이 주제 OJ 유의 ( "") 입력을 사용하여 입력을받을.
저자 코드 : 당신이 간단한 방법을 사용할 수있는 C 언어는 스택에서 사용할 수 있습니다
# 把每一个的右括号的值的位置放进去
def everyRight(right,a):
# 找到该右括号左边的最近左括号的序列号
for j in a:
if j - right < 0:
m = j
return m
my_str = input("")
my_list = list(my_str)
a = [];b = []
for i in range(0,len(my_list)):
if '(' == my_list[i]:
a.append(i)
elif ')' == my_list[i]:
b.append(i)
s1 = [];s2 = []
i = 0
try:
while 1:
# 递归,首先,先找到第一个右括号和第一个左括号,找到后,就去除,然后递归
left = everyRight(b[i],a)
right = b[i]
s1.append(left)
s2.append(right)
# 删除上一次左括号对应的序号,并将下一次的右括号和左括号调用函数
a.pop(left)
everyRight(b[i+1],a)
i = i+1
except:
pass
try:
if len(s1) == len(s2) and len(s1) !=0 and len(a) != 1:
print('配对成功')
else:
print('配对不成功')
except:
print('配对不成功')
그러나,이 방법은 다음과 같은 출력시와 같은 문제가 있습니다
왜 이런 일이 발생합니까? 우리는 다음과 같은 결과를 보면 :
마지막 정지 한 다음 왼쪽과 오른쪽 괄호의 수에 따라 판단 할 때 이번에는 괄호가 중지됩니다 왼쪽 오른쪽 괄호를 충족하지 않은 발생 때 실수, 우리는 우리의 목록을 제거 삭제하는 가치이다.
다음과 같이 코드입니다 :
# 把每一个的右括号的值的位置放进去
def everyRight(right,a):
# 找到该右括号左边的最近左括号的序列号
for j in a:
if j - right < 0:
m = j
return m
my_str = input("")
my_list = list(my_str)
a = [];b = []
for i in range(0,len(my_list)):
if '(' == my_list[i]:
a.append(i)
elif ')' == my_list[i]:
b.append(i)
s1 = [];s2 = []
i = 0
try:
while 1:
# 递归,首先,先找到第一个右括号和第一个左括号,找到后,就去除,然后递归
left = everyRight(b[i],a)
right = b[i]
s1.append(left)
s2.append(right)
print('right{0}'.format(right))
# 删除上一次左括号对应的序号,并将下一次的右括号和左括号调用函数
a.pop(left)
# 删除列表对应的值
my_list.remove(my_list[left])
my_list.remove(my_list[right])
everyRight(b[i+1],a)
i = i+1
except:
pass
# print(s1)
# print(s2)
# print(a)
# print(len(a))
# print(my_list)
a1 = my_list.index(')')
a2 = my_list.index('(')
try:
if len(s1) == len(s2) and len(s1) !=0 and a2 < a1:
print('配对成功')
else:
print('配对不成功')
except:
print('配对不成功')
하지만 여전히 오류가 있습니다 :
그러나 우리는 정답, 내가 설명 할 것이다 개선 다음 블로그에 대한 전체 코드에 가깝습니다.