HackerRank | Python练习

一部分easy的删掉了

Prepare > Python > Introduction

 Python If-Else

Task
Given an integer, , perform the following conditional actions:

  • If  is odd, print Weird
  • If  is even and in the inclusive range of  to , print Not Weird
  • If  is even and in the inclusive range of  to , print Weird
  • If  is even and greater than , print Not Weird
#!/bin/python3
import math
import os
import random
import re
import sys

if __name__ == '__main__':
    n = int(input().strip())
    if(n % 2 == 0 and (n <=5 or n > 20)):
        print("Not Weird")
    else:
        print("Weird")    

 Arithmetic Operators

 Python: Division

if __name__ == '__main__':    
    a = int(input())    
    b = int(input())    
    print(a//b)    //整除
    print(a/b) //分数除法

 Loops

#输入3,输出 0 1 4
if __name__ == '__main__':    
    n = int(input())    
    for i in range(n):        
        print(i**2)

 Write a function:Leap year

Task

An extra day is added to the calendar almost every four years as February 29, and the day is called a leap day. It corrects the calendar for the fact that our planet takes approximately 365.25 days to orbit the sun. A leap year contains a leap day. In the Gregorian calendar, three conditions are used to identify leap years:

The year can be evenly divided by 4, is a leap year, unless:The year can be evenly divided by 100, it is NOT a leap year, unless:The year is also evenly divisible by 400. Then it is a leap year.

This means that in the Gregorian calendar, the years 2000 and 2400 are leap years, while 1800, 1900, 2100, 2200, 2300 and 2500 are NOT leap years.

def is_leap(year):
    leap = False
    
    # Write your logic here
    if(year%4 == 0 and year%100 != 0 )or (year%400 ==0):
        leap = True
    return leap

year = int(input())

 Print Function

#输入3,输出123
if __name__ == '__main__':
    n = int(input())
    for i in range(1, n+1):
        print(i, end="")

Prepare > Python > Basic Data Types

List Comprehensions

Task

输入:x=1 y=1 z=2 n=3

输出:[[0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 1, 0], [1, 1, 1], [1, 1, 2]]

if __name__ == '__main__':
    x = int(input())
    y = int(input())
    z = int(input())
    n = int(input())
    print([[i,j,k] for i in range(x+1) for j in range(y+1) for k in range(z+1) if sum([i,j,k])!=n])

Find the Runner-Up Score!

Task

Given list is[2,3,4,5,5,6] . The maximum score is6 , second maximum is5 . Hence, we print 5 as the runner-up score.

if __name__ == '__main__':
    n = int(input())
    arr = map(int, input().split())
    arr_sorted = sorted(set(arr), reverse=True)
    print(arr_sorted[1])

#arr = map(int, input().split()):将其分割成多个字符串,然后将这些字符串转换为整数,并将它们存储在一个列表中。

#arr_sorted = sorted(set(arr), reverse=True):这一行代码首先使用 set(arr) 将列表中的元素去重,然后使用 sorted 对去重后的元素进行排序,reverse=True 表示降序排序。

Nested Lists

Task

If there are multiple students with the second lowest grade, order their names alphabetically and print each name on a new line.

if __name__ == '__main__':
    main_list = []
    score_set = set()
    for _ in range(int(input())):
        name = input()
        score = float(input())      
        main_list.append((name, score))
        score_set.add(score)
        
    lowest_score = sorted(score_set)[1]
    print(*sorted([name for name, score in main_list if score == lowest_score]), sep = '\n')

Finding the percentage

Task

marks key:value pairs are

'alpha’:[20, 30, 40]
’beta': [30,50,70]
query_name='beta'
The query_name is 'beta'. beta's average score is (30 + 50 + 70)/3 = 50.00.

if __name__ == '__main__':
    n = int(input())
    student_marks = {}
    for _ in range(n):
        name, *line = input().split()
        scores = list(map(float, line))
        student_marks[name] = scores
    query_name = input()
    arr = student_marks[query_name]
    print("%.2f"%(sum(arr)/len(arr)))

Lists

Task

N =4
append 1
append 2
insert 3 1
print
Output:
[1, 3,2]

if __name__ == '__main__':
    N = int(input())
    list = []
    for i in range(N):
        command = input().split()
        if(command[0] == "insert"):
            list.insert(int(command[1]), int(command[2]))
        elif(command[0] == "print"):
            print(list)
        elif(command[0] == "remove"):
            list.remove(int(command[1]))
        elif(command[0] == "append") :
            list.append(int(command[1]))
        elif(command[0] == "sort"):
            list.sort()
        elif(command[0] == "pop"):
            list.pop()
        elif(command[0] == "reverse"):
            list.reverse()

Tuples

Task

Given an integer n , n and space-separated integers as input, create a tuple t, of those integers n. Then compute and print the result of hash(t).

if __name__ == '__main__': 
    n = int(input()) 
    integer_list = map(int, input().split()) 
    print(hash(tuple(integer_list)))

#将整数列表转换为元组,然后计算该元组的哈希值,并将哈希值打印出来。哈希值是元组内容的不可变表示,可以用于快速比较元组是否相等。

Prepare > Python > Strings

sWAP cASE

 Task

大小写转换:Www.HackerRank.com → wWW.hACKERrANK.COM

def swap_case(s):
    ns = s.swapcase()
    return ns

if __name__ == '__main__':
    s = input()
    result = swap_case(s)
    print(result)

#.swapcase():可以实现大小写转换

String Split and Join

  Task

字符串拼接与分开:this is a string→this-is-a-string

def split_and_join(line):
    # write your code here
    return "-".join(line.split(" "))

if __name__ == '__main__':
    line = input()
    result = split_and_join(line)
    print(result)

# s.split(" ") -> ['this', 'is', 'a', 'string']
# "-".join(s) -> this-is-a-string 
# 思路是先拆开split,在加入join

What's Your Name?

  Task

字符串输出:firstname lastname → Hello firstname lastname! You just delved into python.

def print_full_name(first, last):
    # Write your code here
    print(f'Hello {first} {last}! You just delved into python.')

if __name__ == '__main__':
    first_name = input()
    last_name = input()
    print_full_name(first_name, last_name)

#f'  { }       ': 字符串(f-string)的语法,这是 Python 3.6 引入的一项功能。f 字符串允许在字符串中嵌入表达式,就可以在字符串中直接引用变量。

Mutations

  Task

字符串插入字符:abracadabra

                             5 k  

                             → abrackdabra

def mutate_string(string, position, character):
    return string[0:position]+character+string[position+1:]

if __name__ == '__main__':
    s = input()
    i, c = input().split()
    s_new = mutate_string(s, int(i), c)
    print(s_new)

# 字符串插入字符有两种办法:
#    (1)先把string给list(),再指定[]=,最后''.join()把字符串拼接一起
#       string = "abracadabra"
#       l = list(string)
#       l[5] = 'k'
#       string = ''.join(l)
#    (2)直接用切片给分开
#       string[0:5] + k + string[6:]

Find a string

  Task

查找相同的字符串:ABCDCDC → CDC

def count_substring(string, sub_string):
    num = 0
    for i in range(0, len(string)):
        if ord(string[i]) == ord(sub_string[0]):
            if i+len(sub_string)<= len(string):
                if string[i:i+len(sub_string)] == sub_string[:]:
                    num += 1  
    return num

if __name__ == '__main__':
    string = input().strip()
    sub_string = input().strip()
    
    count = count_substring(string, sub_string)
    print(count)

# 还有一种写法,更简单:
# if string[::-1][i: i+len(sub_string)] == sub_string[::-1]:
# 取string的逆序,再从中取出sub_string一样长的字段

String Validators

 Task

In the first line, print True if has any alphanumeric characters. Otherwise, print False.

In the second line, print True if has any alphabetical characters. Otherwise, print False.

In the third line, print True if has any digits. Otherwise, print False.

In the fourth line, print True if has any lowercase characters. Otherwise, print False.

In the fifth line, print True if has any uppercase characters. Otherwise, print False.

if __name__ == '__main__':
    s = input()
    print(any(i.isalnum() for i in s))
    print(any(i.isalpha() for i in s))
    print(any(i.isdigit() for i in s))
    print(any(i.islower() for i in s))
    print(any(i.isupper() for i in s))

#   .isalnum():必须是a-z,A-Z,0-9
#   .isalpha():必须是a-z,A-Z
#   .isdigit():必须是0-9
#   .islower():字母必须全是a-z
#   .isupper():字母必须全是A-Z

Text Alignment

   Task

输入5,输出

n = int(input())
c='H'
#head
for i in range(n):
    print((c * i).rjust(n-1) + c + (c * i).ljust(n - 1)) 
#body
for j in range(n+1):
    print((c * n).center(n * 2) + (c * n).center(n * 6))
#body center
for i in range((n//2)+1):
    print((n * 5 * c).center(n * 6))
#leg
for j in range(n+1):
    print((c * n).center(n * 2) + (c * n).center(n * 6))
#foot
for i in range(n):
    print(((c * (n - 1 -i)).rjust(n) + c + (c * (n - 1 - i)).ljust(n)).rjust(n*6))
    

Text Wrap

   Task

import textwrap

def wrap(string, max_width):
    return textwrap.fill(string, max_width)

if __name__ == '__main__':
    string, max_width = input(), int(input())
    result = wrap(string, max_width)
    print(result)

# textwrap.fill(string, max_width) :
# 是 Python 标准库中 textwrap 模块提供的一个函数。这个函数用于将文本字符串按照指定的最大宽度进行包装(wrap)。

Designer Door Mat

   Task

其实跟那个H的道理一样

# Enter your code here. Read input from STDIN. Print output to STDOUT
n,m = map(int,input().split())
#part 1
c = '.|.'
c_1 = 'WELCOME'
c_2 = '-'
for i in range(n//2):
    print((c * i).rjust((m-3)//2, c_2) + c + (c * i).ljust((m-3)//2, c_2)) 
#part 2
print(c_1.center(m, c_2))
#part 3
for i in range(n//2):
    print((c * (n//2-i-1)).rjust((m-3)//2, c_2) + c + (c * (n//2-i-1)).ljust((m-3)//2, c_2)) 

# n//2:整除
# .center(,)

String Formatting

   Task

python经典进制转换问题:输入十进制,输出十进制 八进制 十六进制(大写) 二进制

def print_formatted(number):
    width=len(str(bin(number)[2:]))
    for i in range(1, number + 1):
        d, o, H, b = str(i), str(oct(i)[2:]), str(hex(i)[2:]).upper(), str(bin(i)[2:])
        print(d.rjust(width), o.rjust(width), H.rjust(width), b.rjust(width))

if __name__ == '__main__':
    n = int(input())
    print_formatted(n)

# str()
# int()    oct()    hex()
# [:]  python的切片

Alphabet Rangoli

 Task

打印问题:

import string
def print_rangoli(size):
    # your code goes here
    alphabet = "abcdefghijklmnopqrstuvwxyz"
    lst = list(alphabet[:size])
    for i in range(1 , size+1):
        res =  lst[size - i + 1:][::-1] + lst[size - i :]
        print("-".join(res).center(4*(size - 1) + 1, "-"))
    for i in range(1 , size):
        res.pop(size - i)
        res.pop(size - i - 1)
        print("-".join(res).center(4*(size - 1) + 1, "-")) 

if __name__ == '__main__':
    n = int(input())
    print_rangoli(n)

Capitalize!

  Task

首字母大写

import math
import os
import random
import re
import sys

# Complete the solve function below.
def solve(s):
    x_s = s.split(" ")
    cap_x = [word.capitalize() for word in x_s]
    cap_s = " ".join(cap_x)
    return cap_s

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')
    s = input()
    result = solve(s)
    fptr.write(result + '\n')
    fptr.close()

The Minion Game

  Task

给两个玩家同样的字符串。 两个玩家都必须使用字符串的字母来制作子串。 斯图尔特必须用辅音开头。 凯文必须用元音开头的单词。 游戏结束时,双方都做了所有可能的子字符串。一个玩家在字符串中每出现一个子字符串就得到 + 1分。

def minion_game(string):
    if not string:
        return
    Stuart, Kevin = 0, 0
    Stuart = play(string, False)
    Kevin = play(string, True)
    if Stuart > Kevin:
        print(f'Stuart {Stuart}')
    elif Stuart < Kevin:
        print(f'Kevin {Kevin}')
    else:
        print('Draw')
        
def play(string : str, start_vowel : bool)->int:
    vowels = "AEIOU"
    consonants = "BCDFGHJKLMNPQRSTVWXYZ"
    score = 0
    str_len = len(string)
    for index, ch in enumerate(string):
        if (start_vowel and ch in vowels) or (not start_vowel and ch in consonants):
            score += str_len - index
    return score
    
if __name__ == '__main__':
    s = input()
    minion_game(s)
# enumerate() :
#    函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
# 参考:https://www.bilibili.com/video/BV1GG411Q71W/?p=2&spm_id_from=pageDriver

Merge the Tools!

  Task

指定字符串的长度分组,且只输出不重复的字符

import math
def merge_the_tools(string, k):
    # your code goes here
    result = ''
    if not string:
        return 
    for index,ch in enumerate(string):
        if index > 0 and index % k == 0:
            if result:
                print(result)
            result = ''
        if ch not in result:
            result += ch
    if result:
        print(result)
        
if __name__ == '__main__':
    string, k = input(), int(input())
    merge_the_tools(string, k)
# enumerate():
#    大有用处啊
# 新建字符串是:u = ''
# 字符串加入字符是:result += ch

Prepare > Python > Sets

 Introduction to Sets

def average(array):
    # your code goes here
    return sum(set(arr)) / len(set(arr))
if __name__ == '__main__':
    n = int(input())
    arr = list(map(int, input().split()))
    result = average(arr)
    print(result)

  Task

if __name__ == '__main__': 

网址:Dashboard | HackerRank 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Hackerrank是一个在线编程平台,提供各种编程练习和竞赛。它包含了许多编程问题,可以使用不同的编程语言进行解答。Ansible是一个自动化工具,用于配置和管理计算机系统。它使用Python编写,并提供了一种简单而强大的方式来自动化各种IT任务。通过结合Hackerrank和Ansible,您可以使用Python编写Ansible脚本,在Hackerrank上解决与自动化和系统管理相关的编程问题。这样您就可以练习Python编程技巧,并学习如何使用Ansible进行自动化运维。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [入门 | Python可以做什么——Python语言的一个简要导引](https://blog.csdn.net/weixin_45233100/article/details/104027977)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Python可以做什么——Python语言的一个简要导引](https://blog.csdn.net/weixin_39608680/article/details/110546579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yatingliu2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值