循环单词

Python41

如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。 输入描述: 输入包括n+1行:

第一行为单词个数n(1 ≤ n ≤ 50)

接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成

输出描述: 输出循环单词的种数 示例1 输入 5 picture turepic icturep word ordw 输出 2 示例2 输入 4 goran igor domagoj relja 输出 4 说明 并不是必须包含两个或两个以上的不同单词才算一种循环单词!

n = int(input())
words = []
for i in range(n):
    words.append(input())
def fun(s):
    ans = set()
    for i in range(len(s)):
        tmp = s[i:]+s[:i]
        ans.add(tmp)
    return ans
res = []
for word in words:
    if fun(word) not in res:
        res.append(fun(word))
print(len(res))

Original: https://blog.51cto.com/heliotopekxy/5565509
Author: KXYHeliotrope
Title: 循环单词



相关阅读1

Title: python批量自动整理文件

阅读全文

为了实现这样的小工具,我们先设想有下面这些功能。

1、可以自定义整理某一个路径下面的所有需要被整理的文件。
2、默认情况下,使用文件后缀作为同一种类文件的文件夹名称,有其他想法的小伙伴可自行扩展。

将使用到的python模块导入到代码块中。

import os  # 文件/文件夹应用操作
import shutil  # 移动文件
import logging  # 使用日志logging来打印日志

选择好需要整理的原始文件目录。

循环单词

下面是整理完成后的效果图,根据文件类型对各种文件进行整理。

循环单词

在代码块中加入日志打印的模块,这里日志打印选择的是logging模块。

logger = logging.getLogger('自动归纳文件')  # 日志名称
logging.basicConfig(format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')  # 日志打印格式
logger.setLevel(logging.DEBUG)  # 日志打印级别

下面是文件整理的代码块的全部实现方式,主要部分都加上注释说明。

dir = input('请输入需要整理的文件目录: \n')  # 需要整理的文件路径

if os.path.isdir(dir):
    logger.info('当前目录[' + dir + ']校验成功!')
    paths = []
    for file_path, dir_names, file_names in os.walk(r'' + dir):
        for file_name in file_names:
            try:
                file_name_path = os.path.join(file_path, file_name)
                dir_ = file_name.split('.')[1]
                new_file_name_path = os.path.join(dir, dir_)
                # 校验新的文件夹是否已经存在
                if os.path.isdir(new_file_name_path):
                    # 直接移动文件
                    shutil.move(file_name_path, new_file_name_path)
                else:
                    # 创建好文件夹后移动文件
                    os.mkdir(new_file_name_path)
                    shutil.move(file_name_path, new_file_name_path)
                paths.append(os.path.join(new_file_name_path, file_name))
            except:
                logger.error('[' + file_name_path + ']移动发生异常,执行下一个!')

    for path in paths:
        logger.info('移动完成的文件:' + str(path))

else:
    logger.error('输入的文件夹或者目录不存在!')

以上就是自动整理文件的全部代码块的实现部分,使用时依次将代码块copy到自己的开发工具中直接启动就可以了。

循环单词

【往期精彩】

初学者福利:分享五个免费的 Python 学习网站,抓紧收藏吧!

有趣的控制台玩法:一行代码绘制控制台图像!

数据处理小工具:Excel 批量数据文件拆分/整合器...

GUI猜数字游戏,直接开玩...

办公自动化:PDF文件合并器,将多个PDF文件进行合并...

手把手教你做一个数据图表生成器(附源码)...

动态指针时钟:利用pyqt5制作指针钟表显示实时时间

hashlib.md5()函数来筛选出系统重复文件并移除...

哈撒给,英雄联盟全皮肤下载器来了...

PyQt5的敏感词检测工具制作,运营者的福音...

手绘图片生成器:以雪容融为例一键生成...

抖音同款课堂点名系统,PyQt5写起来很简单...

Original: https://www.cnblogs.com/lwsbc/p/16001709.html
Author: Python集中营
Title: python批量自动整理文件

相关阅读2

Title: python-变量、运算符、数据类型

变量、运算符与数据类型

  • 在使用变量前,需要现对其赋值
  • 变量名可以包括字母、数字、下划线,但不能以字母开头
  • python 变量名大小写是敏感的
first = 2
second = 3
third = first + second
print(third)  # 5
  • 算数运算符 加(+)、减(-)、乘()、除(/)、整除(//)、取余(%)、幂(*)
print(1 + 1)  # 2
print(2 - 1)  # 1
print(3 * 4)  # 12
print(3 / 4)  # 0.75
print(3 // 4)  # 0
print(3 % 4)  # 3
print(2 ** 3)  # 8
  • 比较运算符 大于(>)、大于等于(>=)、小于(
  • 逻辑运算符 与(and)、或(or)、非(not)
print((3 > 2) and (3 < 5))  # True
print((1 > 3) or (9 < 2))  # False
print(not (2 > 1))  # False
  • 位运算符 按位取反(~)、按位与(&)、按位或(|)、按位异或(^)、左移(<
print(bin(4))  # 0b100
print(bin(5))  # 0b101
print(bin(~4), ~4)  # -0b101 -5
print(bin(4 & 5), 4 & 5)  # 0b100 4
print(bin(4 | 5), 4 | 5)  # 0b101 5
print(bin(4 ^ 5), 4 ^ 5)  # 0b1 1
print(bin(4 << 2), 4 << 2)  # 0b10000 16
print(bin(4 >> 2), 4 >> 2)  # 0b1 1
  • 三元运算符
x, y = 4, 5
small = x if x < y else y
print(small)  # 4
  • 其他运算符 存在(in)、不存在(not in)
letters = ['A', 'B', 'C']
if 'A' in letters:
    print('A' + ' exists')
if 'h' not in letters:
    print('h' + ' not exists')

# A exists
# h not exists

是(is)、不是(not is)

# 比较的两个变量均指向可变类型
a = ["hello"]
b = ["hello"]
print(a is b, a == b)  # False True
print(a is not b, a != b)  # True False
'''
- is, is not 对比的是两个变量的内存地址
- ==, != 对比的是两个变量的值
- 比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
- 对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
'''

int整型 <class 'int'></class>
float浮点型 <class 'float'></class>
bool布尔型 <class 'bool'></class>

在python中万物皆对象(object),基本数据类型也不例外,只要是对象就有相应的属性(attributes)和方法(methods)。

# 举例找一个整数的二进制表示,再返回其长度
a = 1031
print(bin(a))  # 0b10000000111
print(a.bit_length())  # 11

获取类型信息

1. 原码、反码和补码

二进制的三种表示形式,计算机内部使用补码表示。

  • 原码:有一位符号位
00 00 00 11 -> 3
10 00 00 11 -> -3
  • 反码:正数的反码是原码,复数的反码是符号位不变,其余位取反
00 00 00 11 -> 3
11 11 11 00 -> -3
  • 补码:正数的补码就是原码,负数的补码就是反码+1
00 00 00 11 -> 3
11 11 11 01 -> -3

符号位:最高位为符号位,0表示正数,1表示负数。在位运算中符号位也参与运算。

2. 按位运算

  • 按位非~ 把二进制数的0和1全部取反,包括符号位
  • 按位与& 只有两个都为1时才为1
  • 按位或| 只要其中一个为1就为1
  • 按位异或^ 对应位不同时为1
  • 按位左移 将数值的二进制表示向左移动i位
  • 按位右移 将数值的二进制表示向右移动i位

3. 位运算实现快速计算

  • 通过">>"和"<
  • 通过"^"可以快速交换两个数
  • 通过a&(-a)可以快速获取a的最后为1位置的整数
print(8>>3) # 1

a = 2
b = 5
a ^= b
b ^= a
a ^= b
print(a) # 5
print(b) # 2

print(a&(-a))

4. 位运算实现整数集合

一个数的二进制表示可以看做一个集合(0/1分别表示不在/在集合中)。

eg:集合{1, 3, 4, 8},可以表示成 01 00 01 10 10 而对应的位运算可就可以看作对集合进行的操作。

元素与集合的操作:

# a | (1< 把 i 插入到集合中
# a & ~(1< 把 i 从集合中删除
# a & (1< 判断 i 是否属于该集合(零不属于,非零属于)
a = 4
print(bin(a)) #0b100
print(bin(a|(1<

集合之间的操作:

# a 补   -> ~a
# a 交 b -> a & b
# a 并 b -> a | b
# a 差 b -> a & (~b)

a = 4
b = 19
print(bin(a)) # 0b100
print(bin(b)) # 0b10011
print(bin(~a)) # -0b101
print(bin(a&b)) # 0b0
print(bin(a|b)) # 0b10111
print(bin(a&(~b))) # 0b100

整数在内存中是以补码的形式存在的,输出自然也是按照补码输出。

注意:

  • python中 bin一个负数,是原码的二进制加上一个负号
  • python中整型是不限制程度的,不会超范围溢出,普通32位,超过会自动当长整型处理,几乎没有限制

点击标题进行跳转

Original: https://www.cnblogs.com/qiaofutu/p/16205165.html
Author: iiYing
Title: python-变量、运算符、数据类型

相关阅读3

Title: Python中的print()语句

Python中print()语句的相关使用

介绍

print()函数可以将输出的信息打印出来,即发送给标准输出流。Python中可以直接使用print()函数,将信息展示在控制台

基本使用方法

输出数字

可直接在括号内输入想要打印的数字

#输出数字
print(520)
print(98.5)

运行结果:

循环单词

输出字符串

可利用英文输入法下的单引号或双引号,输出字符

#输出字符串
print('Helloworld')
print("Helloworld")

运行结果:

循环单词

输出含运算符的表达式

直接将含运算符的表达式放置于括号内,可打印运算结果

#输出含有运算符的表达式
print(3+1) #输出表达式的结果

运行结果:

循环单词

不换行输出

利用逗号隔开,同时输出多组内容,使其不换行输出

#不进行换行输出(输出内容在一行)
print('hello','world','Python')

运行结果:

循环单词

转义字符

python相关转义字符表:

循环单词

# 转义字符
# \n 换行符:换行
print('hello\nworld')
# \t 制表符:每四个为一组,光标移动到下组四个字符前
print('hello\tworld')
print('helloooo\tworld')
# \r 回车符:光标移动到本行的开头(删掉本行之前的)
print('hello\rworld')
# \b 退格符:退格(Backspace),将光标位置移到前一位。
print('hello\bworld')
#需使用'\'符号时,要另外用一个'\'进行转义
print('http:\\www.xxx.com')
print('http:\\\\www.xxx.com')

运行结果:

循环单词

原字符

不希望字符串中的转义字符起作用,就用原字符,就是在字符串之前加上r或R

#原字符:
print(r'hello\nworld')
#当 r 或者 R 前缀存在的时候,在反斜杠后面的字符保持不变,并且反斜杠本身会保留在字符串中。
print(r'hello\nworld\\') #原始字符串无法以单个的(奇数个的)反斜杠结尾。

运行结果:

循环单词

Original: https://www.cnblogs.com/ChaoZeng/p/16498882.html
Author: KeepForwoard
Title: Python中的print()语句