华为机试题:HJ99 自守数(python)

(1)题目描述

在这里插入图片描述

(2)Python3实现

while True:
    try:
        n = int(input())
        num = 0
        for i in range(n+1):			# 包括n
            b = str(i**2)				# 平方,转字符串格式
            if b.endswith(str(i)):		# 检测是否以指定字符串结尾
                num += 1
        print(num)
    except:
        break

(3)知识点详解

1、input():获取控制台(任意形式)的输入。输出均为字符串类型。

str1 = input()
print(str1)
print('提示语句:', str1)
print(type(str1))

'''
asd123!#
提示语句: asd123!#
<class 'str'>
'''
常用的强转类型 说明
int(input()) 强转为整型(输入必须时整型)
list(input()) 强转为列表(输入可以是任意类型)

1.1、input() 与 list(input()) 的区别、及其相互转换方法

  • 相同点:两个方法都可以进行for循环迭代提取字符,提取后都为字符串类型。
  • 不同点str = list(input()) 将输入字符串转换为list类型,可以进行相关操作。如: str.append()
  • 将列表转换为字符串:str_list = ['A', 'aA', 2.0, '', 1]
  • 方法一:print(''.join(str))
  • 方法二:print(''.join(map(str, str_list)))

备注:若list中包含数字,则不能直接转化成字符串,否则系统报错。

  • 方法一:print(''.join([str(ii) for ii in str_list]))
  • 方法二:print(''.join(map(str, str_list)))
    map():根据给定函数对指定序列进行映射。即把传入函数依次作用到序列的每一个元素,并返回新的序列。

(1) 举例说明:若list中包含数字,则不能直接转化成字符串,否则系统报错。

str = ['25', 'd', 19, 10]
print(' '.join(str))

'''
Traceback (most recent call last):
 File "C:/Users/Administrator/Desktop/test.py", line 188, in <module>
   print(' '.join(str))
TypeError: sequence item 3: expected str instance, int found
'''

(2)举例说明:若list中包含数字,将list中的所有元素转换为字符串。

str_list = ['A', 'aA', 2.0, '', 1]
print(''.join(str(ii) for ii in str_list))
print(''.join([str(ii) for ii in str_list]))
print(''.join(map(str, str_list))) 		# map():根据给定函数对指定序列进行映射。即把传入函数依次作用到序列的每一个元素,并返回新的序列。

'''
AaA2.01
AaA2.01
AaA2.01
'''

2、print() :打印输出。

【Python】print()函数的用法

x, y = 1, 9
print('{},{}' .format(x, y))	# 打印方法一
print('*'*10)					# 打印分割符
print(x, ',', y)				# 打印方法二

'''
1,9
**********
1 , 9
'''

3、range() :输出指定范围内的所有值(前闭后开)。

函数说明:range(start=0,stop,step=1)
输入参数:

  • start:序列的起始点,默认值0。
  • stop:序列的终止点。
  • step:滑动步长,默认为1。正数表示迭代上升,负数表示迭代下降。

备注:前闭后开[A,B),即可以取到A值,但取不到B值。

# (1)指定stop=9, start默认为0,step默认为1
for i in range(9):
    print('A =', i)
'''
A = 0
A = 1
A = 2
A = 3
A = 4
A = 5
A = 6
A = 7
A = 8
'''
# (2)指定start=2, stop=9, step默认为1
for i in range(2, 9):
    print('B =', i)
'''
B = 2
B = 3
B = 4
B = 5
B = 6
B = 7
B = 8
'''
# (3)指定start=2, stop=9, step=-2
for i in range(9, 2, -2):
    print('C =', i)
'''
C = 9
C = 7
C = 5
C = 3
'''

3、整型int() :将指定进制(默认十进制)的一个字符串或数字转换为十进制整型(强转)。

  • Python2 有 long int 类型,而Python3 整型没有范围限制,故可以当作 long int 使用。
  • 布尔类型 bool 是整型的子类型,包括两种:True == 1、False == 0

函数说明:int(x, base=10)
输入参数:

  • x:字符串或数字(整数、浮点数)。
  • base默认十进制
    备注1:若带参数base,表示将 (二进制、十进制、十六进制)的 x 转换为十进制。
    备注2:若带参数base,则输入必须是整数,且整数必须以字符串的形式进行输入。
输入 返回值 举例 输出
int('整数', base=16) 输入整数指定为16进制,转换为10进制整数(同理:其余进制) print(int('20', 16))print(int('0XAA', 16)) 32 和 170
(1)输入为空或整数 \ \ \
int() \ print(int()) 0
int(浮点数) \ print(int(-2.1)) -2
(2)输入为字符串 \ \ \
int(字符串) \ print(int('-2')) -2
int(字符串(浮点数)) 需先将str转换为float,再转换为int,否则报错。 print(int(float('-2.1'))) -2

十进制转换为16进制

十六进制范围:0 ~ 65536(0000 ~ FFFF)
方法:

  • (1)十进制数除16(取余数1),得商1
  • (2)商1除16(取余数2),得商2
  • (3)商2除16(取余数3),得商3
  • (4)最后商3等于0(取余数4)
  • 最终结果为倒序余数= [余数4, 余数3, 余数2, 余数1]

举例(整数:65036)
(1)65036 除 16,商4064,余数 12(十六进制C)
(2)4064 除 16,商254,余数 0(十六进制0)
(3)254 除 16,商15,余数 14(十六进制E)
(4)15除16,商0,余数 15(十六进制F)。
(5)结束:得16进制为 = FE0C

十进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16进制 0 1 2 3 4 5 6 7 8 9 A B C D E F
2进制 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

3.1、bin():十进制整数转换为二进制码。返回值为字符串。

函数说明:bin(整型)

print(bin(-3))
print(type(bin(-3)))

'''
-0b11
<class 'str'>
'''

3.2、ord(): ASCII字符转换为十进制整数(Unicode字符 —— Unicode数值)。

函数说明:ord(字符)

print(ord('A'))
print(type(ord('A')))

'''
65
<class 'int'>
'''

3.3、chr():将10进制或16进制数转换为ASCII字符。(Unicode数值 —— Unicode字符)。

函数说明:chr(number)

print(chr(97))
print(type(chr(97)))

'''
a
<class 'str'>
'''

4、字符串str() :将参数转换成字符串类型(强转)—— 字符串是有序不可变序列。

函数说明:str(x, base=10)
一般来说,有序序列类型都支持索引,切片,相加,相乘,成员操作

print('返回空字符串:', str())
print('整数转换为字符串:', str(-23))
print('浮点数转换为字符串:', str(1.3e2))
print('列表转换为字符串:', str([12, '-23.1', 'Python']))
print('元组转换为字符串:', str((23, '9we', -8.5)))
print('字典转换为字符串:', str({
    
    'Huawei': 'China', 'Apple': 'USA'}))
print('集合转换为字符串:', str({
    
    'China', 'Japan', 'UK'}))

'''
返回空字符串: 
整数转换为字符串: -23
浮点数转换为字符串: 130.0
列表转换为字符串: [12, '-23.1', 'Python']
元组转换为字符串: (23, '9we', -8.5)
字典转换为字符串: {'Huawei': 'China', 'Apple': 'USA'}
集合转换为字符串: {'China', 'UK', 'Japan'}
'''

5、算术运算符

序列 运算符 名称 说明 举例 结果 数据类型
【1】 + (1)对于数字:求和。 c = 1 + 2 c = 3 int型
【1】 + (2)对于序列类型(如:字符串):拼接操作 str = 'a' + 'b' str = 'ab' 字符串型
2 - 求差值 c = 1 - 2 c = -1 int型
【3】 * (1)对于数字:求积。 c = 2 * 3 c = 6 int型
【3】 * (2)对于序列类型(如:字符串):重复操作 str = 'a' * 3 str = 'aaa' 字符串型
4 / 求商(两个整数或浮点数相除,结果为float型) c = 3 / 2 c = 1.5 浮点型
5 % 取余 求余数 c = 3 % 2 c = 1 int型
6 ** 求次幂 c = 3 ** 2 c = 9 int型
【7】 // 地板除法 向下取整。(1)两个整数相除,结果为int型 c = 3 // 2 c = 1 int型
【7】 // 地板除法 向下取整。(2)除数或被除数为float类型,则结果为float类型。 c = 3 // 2.0 c = 1.0 浮点型

6、str.endswith():判断字符串中(可指定范围)是否以指定字符或子串结尾。返回bool值。

函数说明:str.endswith(suffix, start, end)
输入参数:

  • suffix:后缀。可以是字符、字符串、元组(常用于判断文件类型)。
  • start:索引字符串的起始位置。默认0。
  • end:索引字符串的结束位置。默认字符串的长度。

备注:空字符的情况。返回值通常为True。

str = "i love python"
print("1:",str.endswith("")) 			# 空字符
print("2:",str.endswith("n")) 
print("3:",str.endswith("python"))
print("4:",str.endswith("n",0, 6))		# 索引 'i love' 是否以 'n' 结尾。
print("5:",str.endswith(("n","z")))		# 遍历元组,任意一个满足条件即返回True
print("6:",str.endswith(("k","m")))		# 遍历元组,任意一个满足条件即返回True
 
# 判断文件类型
file = "python.txt"
if file.endswith("txt"):					# 字符串类型
    print("该文件为文本。")
elif file.endswith(("AVI","WMV","RM")):		# 元祖类型
    print("该文件为视频。")
else:
    print("文件格式未知。")

'''
1: True
2: True
3: True
4: False
5: True
6: False
该文件为文本。
'''

猜你喜欢

转载自blog.csdn.net/shinuone/article/details/129291289