文章目录
题目描述
幸运数字,只需计算输入字符中每个字符的字母位置(A为1,B为2…Z为26)的所有数字之和,直到总和的长度等于1。(这里的1代表一个字符的长度)
大写和小写字母被视为相同,字母表中没有的所有内容都将被忽略:例如“john”:
john => 10 + 15 + 8 +14 = 47
47 => 4+ 7 => 11
11 => 1 + 1 = > 2
john的幸运数字是2
输入 |
---|
行 1:一串 ascii 字符。 |
输出 |
第 1 行:对应于幸运数字的整数 |
例 |
输入 |
john |
输出 |
2 |
代码效果
知识点准备
string.ascii_letters.index(i)
.index(i)返回下标值
import string |
---|
string.ascii_uppercase 所有大写字母 |
string.ascii_lowercase 所有小写字母 |
string.ascii_letters 所有字母 |
string.digits 所有数字 |
Python isalpha() 方法检测字符串是否只由字母组成。
如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
Python lower() 方法转换字符串中所有大写字符为小写。
代码一
# -*- codeing = utf-8 -*-
# @Time :2022/5/17
# @Author :季白九月
# @File :1.py
# @Software: PyCharm
a=sum(ord(x)-96for x in input().lower()if'`'<x<'{')
while a>9:a=sum(int(x)for x in str(a))
print(a)
代码二
import string as s
n=input().lower()
x=sum([s.ascii_letters.index(i)+1for i in n if i.isalpha()])
while x>9:x=sum([int(i)for i in str(x)])
print(x)
代码三
a = 0
for x in input().lower():
if'`'<x<'{':
a+=(ord(x)-96)
while a>9:a=sum(int(x)for x in str(a))
print(a)
效果
jhon |
---|
2 |